黑马程序员技术交流社区

标题: Socket的receive为什么没阻塞效果 [打印本页]

作者: 何超    时间: 2013-11-30 17:41
标题: Socket的receive为什么没阻塞效果
本帖最后由 何超 于 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类也没办法发送数据了啊
作者: 狼人→浪人    时间: 2013-11-30 18:17
我把你的代码拷到myeclipse运行完全没问题,建议使用工具吧。

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

QQ截图20131130181457.png





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2