黑马程序员技术交流社区

标题: 网络编程中接收端接收不到数据是为什么? [打印本页]

作者: 三分之一    时间: 2015-8-23 17:39
标题: 网络编程中接收端接收不到数据是为什么?
本帖最后由 三分之一 于 2015-8-30 15:10 编辑

大神们帮忙看看,程序在运行后没有问题,在Dos命令行下,开启两个窗口,一个是发送端,一个是接收端,接收端一直开启,发送端发送数据,为什么接收端没有任何反应?是我机器的原因吗?
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.net.DatagramPacket;
  5. import java.net.DatagramSocket;
  6. import java.net.InetAddress;
  7. import java.net.SocketException;

  8. /**需求:UDP---键盘录入数据方式来进行数据传输(发送端)
  9. * @param args
  10. */
  11. class UdpSend{
  12.         public static void main(String[] args) throws SocketException,IOException {
  13.                 //创建UDP的socket服务
  14.                 DatagramSocket ds=new DatagramSocket();
  15.                 //键盘输入数据
  16.                 BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
  17.                 //读取输入的数据
  18.                 String line=null;
  19.                 while((line=bufr.readLine())!=null)
  20.                 {
  21.                         if("886".equals(line))
  22.                                 break;
  23.                         //把数据封装进数据包
  24.                         byte[] buf=line.getBytes();
  25.                         DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("172.18.245.7"),10005);
  26.                         //发送数据
  27.                         ds.send(dp);
  28.                         //关闭资源
  29.                         ds.close();
  30.                 }
  31.                

  32.         }

  33. }
  34. class UdpReceive{
  35.         public static void main(String[] args) throws SocketException,IOException {
  36.                 //创建socket服务,建立端点连接
  37.                 DatagramSocket ds=new DatagramSocket(10005);
  38.                 while(true)
  39.                 {
  40.                         //定义数据包,存储数据
  41.                         byte[] buf=new byte[1024];
  42.                         DatagramPacket dp=new DatagramPacket(buf,buf.length);
  43.                         //接收数据
  44.                         ds.receive(dp);
  45.                         //获取数据包中的数据
  46.                         String ip=dp.getAddress().getHostAddress();
  47.                         String data=new String(dp.getData(),0,dp.getLength());
  48.                         System.out.println(ip+"...."+data);
  49.                         //关闭资源
  50.                         //ds.close();
  51.                 }

  52.         }


  53. }
复制代码




作者: zhangcheng0403    时间: 2015-8-23 19:12
debug模式,打断点跟踪一下吧,这么看,我也有点晕啊。
作者: 三分之一    时间: 2015-8-24 14:06
zhangcheng0403 发表于 2015-8-23 19:12
debug模式,打断点跟踪一下吧,这么看,我也有点晕啊。

什么是debug模式,打断点跟踪啊?怎么弄啊?表示菜鸟一个,不太懂
作者: MoonsenHung    时间: 2015-8-24 14:15
我也的在dos下运行不了,我是来站岗的。。。
作者: 蓬头小道士    时间: 2015-8-24 14:32
你接受到数据以后并没有打印输出语句。
作者: 三分之一    时间: 2015-8-24 14:36
蓬头小道士 发表于 2015-8-24 14:32
你接受到数据以后并没有打印输出语句。

有输出语句啊,就是这句:
  1. System.out.println(ip+"...."+data);
复制代码

作者: 蓬头小道士    时间: 2015-8-24 15:15
三分之一 发表于 2015-8-24 14:36
有输出语句啊,就是这句:

你看看是不是ip地址错了,在我的电脑上可以运行。
作者: myself123    时间: 2015-8-24 18:06
看看ip和端口是否正确
作者: zhangcheng0403    时间: 2015-8-25 15:17
三分之一 发表于 2015-8-24 14:06
什么是debug模式,打断点跟踪啊?怎么弄啊?表示菜鸟一个,不太懂

你用的是eclipse吗?
作者: 三分之一    时间: 2015-8-25 15:27
zhangcheng0403 发表于 2015-8-25 15:17
你用的是eclipse吗?

恩,我用的是MyEclipse8.5
作者: zhangcheng0403    时间: 2015-8-25 15:39
三分之一 发表于 2015-8-25 15:27
恩,我用的是MyEclipse8.5

上面工具栏上应该有debug吧,在行号前双击,就能打断点了,然后用debug运行,程序运行到断点就会暂停,你可以把光标停在变量上,就能看到变量的值了。好像是按F6吧还是F5,按一次程序运行一行,根据值跟踪,就知道那里的问题了,非常方便,以后老师应该会教的,
作者: 三分之一    时间: 2015-8-25 15:43
zhangcheng0403 发表于 2015-8-25 15:39
上面工具栏上应该有debug吧,在行号前双击,就能打断点了,然后用debug运行,程序运行到断点就会暂停,你 ...

好嘞,我试试~先谢谢你啦!
作者: zhangcheng0403    时间: 2015-8-25 15:44
三分之一 发表于 2015-8-25 15:43
好嘞,我试试~先谢谢你啦!

不用客气
作者: 三分之一    时间: 2015-8-25 16:54
MoonsenHung 发表于 2015-8-24 14:15
我也的在dos下运行不了,我是来站岗的。。。

你解决了吗?我解决了,但是我是新下载了一个EditPlus就好了,不知道你这样做可不可以。。。




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