A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何超 中级黑马   /  2013-11-30 17:41  /  1183 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何超 于 2013-11-30 20:06 编辑
  1. import java.io.IOException;
  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;

  4. /*
  5. 定义一个应用程序用于接收Udp传输的数据并处理数据

  6. 思路:
  7. 1.定义UdpSocket服务 通常都会监听一个端口其实就是在给这个接受网络应用程序定义标示
  8. 方便明确哪些数据过来 对应应用程序好处理
  9. 2.定义一个数据报,因为要存储接收到的字节数据。
  10. 因为数据报包中有更多功能可以提取数据包中的不同信息
  11. 3.通过Socket服务的recevice方法将收到的数据存入已定义好的数据报包
  12. 4.通过数据报对象的特有功能,将这些不同的数据取出。打印在控制台上
  13. */
  14. class UdpRece
  15. {
  16.         public static void main(String[] args) throws IOException
  17.         {
  18.                 //创建Udp的Socket服务并建立端点
  19.                 DatagramSocket ds=new DatagramSocket(10000);

  20.                 //定义一个数据包用于存储数据
  21.                 byte[] buf=new byte[1024];
  22.                 DatagramPacket dp=new DatagramPacket(buf,buf.length);
  23.                
  24.                 //通过Socket服务的receive方法将收到数据存入数据报包中
  25.                 ds.receive(dp);

  26.                 //通过数据报包的方法获取其中的数据
  27.                 String ip=dp.getAddress().getHostAddress();
  28.                
  29.                 String data=new String(dp.getData(),0,dp.getLength());                                

  30.                 int port=dp.getPort();
  31.                
  32.                 System.out.println(ip);
  33.                 System.out.println(data);
  34.                 System.out.println(port);

  35.                 ds.close();
  36.         }
  37. }
复制代码

在cmd中运行这段代码直接就停了  不会处于阻塞状态 这是为什么?这样不阻塞的话我运行无数次send类也没办法发送数据了啊

评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
枫儿 + 1 + 6 神马都是浮云

查看全部评分

1 个回复

正序浏览
我把你的代码拷到myeclipse运行完全没问题,建议使用工具吧。

QQ截图20131130181457.png (59.74 KB, 下载次数: 22)

QQ截图20131130181457.png

评分

参与人数 1技术分 +1 黑马币 +6 收起 理由
枫儿 + 1 + 6 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马