我的发送端也指定了端口呀,我的发送端不是有这条语句么。
InetAddress.getByName("127.0.0.1"),3000);

解决方案 »

  1.   

    是这样的,你查看一下API里的DatagramPacket构造函数就明白了:DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(), InetAddress.getByName("127.0.0.1"),3000);中的InetAddress.getByName("127.0.0.1")是目标地址,3000是目标端口而不是本机端口和地址,不信你把127.0.0.1地址改一下(如128.0.0.1),则接受端就收不到任何信息了!!
      

  2.   

    我有点懂了,在向你确认一下我理解的是不是正确。目标端口和本机端口并不一样,目标端口是我指定的他的值是固定的,本机端口由操作系统来决定他的值我预先我法确定。我指定的3000是目标端口;而我用getPort()方法得到的是本机端口。我不是计算机专业的,有些基础知识我不了解。非常感谢你的帮助。我现在学java有一个多月了,感觉进步不是很大很是郁闷呀!
      

  3.   

    是这样,你在UdpSend类中定义的
    DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("127.0.0.1"),3000);确定了要发送的目的地(包括目的地的IP和端口)。你在UdpRecv类中定义的:
    dp.getAddress().getHostAddress()和dp.getPort是得到的发源地的地址和端口。学JAVA最好从基础开始(我学了半年后才开始接触网络和IO的,因为这几块比较复杂!)