黑马程序员技术交流社区

标题: 关于网络编程这块有个小问题,知道的麻烦进来下 [打印本页]

作者: H马凯    时间: 2015-3-28 08:18
标题: 关于网络编程这块有个小问题,知道的麻烦进来下
今天编写了一个UDP传输,出现个小问题,我编写的是两个主函数那个,也就是发送端和接收端,  而且把我写运行的是接收端,为什么运行发送端后接收端没反应?收不到发送端发过来的数据是怎么回事??
还有一点就是:当我把发送端的发送的IP地址改为    192.168.1.255   就可以接受到了   这又是为什么啊?  搞不懂    谁能具体说下???
  1. /*UDP传输
  2. */
  3. /*发送端
  4.         步骤:1、建立UDP的socket服务,也就是端点
  5.                   2、将要提供的数据封装到数据包中
  6.                   3、通过socket服务的发送功能将数据发出
  7.                   4、关闭资源
  8. */
  9. import java.net.*;
  10. class  DatagramSocketSend
  11. {
  12.         public static void main(String[] args) throws Exception
  13.         {
  14.                 //创建UDP的socket服务
  15.                 DatagramSocket out = new DatagramSocket();
  16.                 //要发送的数据
  17.                 byte [] data = "UDP come to Be".getBytes();
  18.                 //建立数据包,实现无线投递服务
  19.                 DatagramPacket pack =
  20.                         new DatagramPacket(data,data.length,InetAddress.getByName("192.168.1.254"),10010);
  21.                 //通过socket服务的sent方法将数据发出
  22.                 out.send(pack);       
  23.                 //关闭资源
  24.                 out.close();
  25.         }
  26. }
  27. /*接收端
  28.         步骤:1、创建UDP接收端服务,并指定端口号
  29.                   2、定义一个数据包,用来存储接收到的字节数据,
  30.                         因为数据包对象中有更多功能可以提取字节数据中的不同数据信息
  31.                   3、通过Socket服务的receive方法将接收到的数据存入已定义好的数据包中
  32.                   4、使用数据包的特有功能,对这些不同的数据取出,并打印到控制台
  33.                   5、关闭资源

  34. */
  35. class  DatagramSocketReceive
  36. {
  37.         public static void main(String[] args) throws Exception
  38.         {
  39.                 //创建socket服务,并指定端口号为10000,方便测试
  40.                 DatagramSocket ds = new DatagramSocket(10010);
  41.                 //定义一个数据包,用于存储接收到的数据
  42.                 byte [] buff = new byte[1024];
  43.                 DatagramPacket pack = new DatagramPacket(buff,buff.length);
  44.                 //通过socket服务的receive方法将接收到的数据存入数据包
  45.                 ds.receive(pack);   //该方法是阻塞状态
  46.                 //获取信息
  47.                 //获取发送端IP
  48.                 System.out.println(pack.getAddress().getHostAddress());
  49.                 //获取发送端端口号
  50.                 System.out.println(pack.getPort());
  51.                 //获取发送端发送的数据的长度
  52.                 System.out.println(pack.getLength());
  53.                 //获取发送端发送的数据
  54.                 System.out.println(new String(pack.getData(),0,pack.getLength()));
  55.         }
  56. }
复制代码






作者: 艺多不压身丶    时间: 2015-3-28 08:20
流的。问题,收不到数据,或者数据根本就没发出去
作者: H马凯    时间: 2015-3-28 09:25
艺多不压身丶 发表于 2015-3-28 08:20
流的。问题,收不到数据,或者数据根本就没发出去

不对啊    因为我法发送端要发送的IP地址改为   192.168.1.255  就可以收到啊   这又是什么原因???
作者: 高光天    时间: 2015-3-28 09:28
你的ip是192.168.1.254吗  自己在控制台中ipconfig下  或者直接编程自己看下ip

如果只在自己机器做测试的话建议使用127.0.0.1
作者: z47057554    时间: 2015-3-28 10:47
本帖最后由 z47057554 于 2015-3-28 10:49 编辑

上+1,192.168.1.255是广播地址,只要你的 IP 在 192.168.1.1~254都能收到




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