黑马程序员技术交流社区

标题: javaSE网络编程中的问题 [打印本页]

作者: 张亭    时间: 2012-5-14 20:46
标题: javaSE网络编程中的问题

  1. <P> import java.net.*;</P>
  2. <P>class UdpRec {
  3. public static void main(String[] args) throws Exception{
  4.   DatagramSocket ds = null;
  5.   DatagramPacket dp = null;
  6.    ds = new DatagramSocket(4000);//电脑上QQ用了4000号端口,为啥编译时不报错呢
  7.    while (true) {
  8.     byte[] buf = new byte[1024];
  9.     dp = new DatagramPacket(buf,buf.length);
  10.     ds.receive(dp);</P>
  11. <P>    String ip = dp.getAddress().getHostAddress();</P>
  12. <P>    String data =
  13.      new String(dp.getData(),0,dp.getLength());</P>
  14. <P>    int port = dp.getPort();
  15.    
  16.     System.out.println(ip+"::"+data+"::"+port);
  17.    }
  18. }
  19. }
  20. </P>
复制代码
学习毕老师java第23天网络时,课程中说端口已用的情况下会报错,
我电脑上开着QQ,查看360发现用的是4000,但是我在代码中设置4000却没报错,不过信息也收不到了,这时怎么回事呢
还有,0.0.0.0是什么地址?和127.0.0.1有啥关系没,有知道的请说一下,谢谢
最后一个问题,我换个已用的TCP端口完全没问题,不冲突报错,也能收到信息
是不是说TCP,UDP可以共享同一个端口呢



作者: 崔陈喜    时间: 2012-5-14 21:56
肯定编译时出错,好好查一下
还有,0.0.0.0是什么地址?和127.0.0.1,当然有关系了,他们是不同的地址
是不是说TCP,UDP不可以共享同一个端口
作者: 朱晓辉    时间: 2012-5-14 22:08
1. 严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一 律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。

2. 网络中0.0.0.0的IP地址表示整个网络,即网络中的所有主机。它的作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。

127.0.0.1是回送地址,指本地机,一般用来测试使用。
作者: 张亭    时间: 2012-5-15 09:24
谢谢楼上的回答 和 测试,
问题还没解决,大家踊跃点哦




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