这是客户端代码
import java.net.*;public class UdpSend
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = new DatagramSocket();
String message = "Welcome to Java.";
DatagramPacket dp = new DatagramPacket(message.getBytes(),message.getBytes().length,InetAddress.getByName("172.17.22.226"),5000);
ds.send(dp);
ds.close();
}
}
这是服务端代码
import java.net.*;public class UdpReceive
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = new DatagramSocket(5000);
byte[] buf = new byte[1024];
while(true){
DatagramPacket dp = new DatagramPacket(buf,buf.length);
ds.receive(dp);
String message = new String(dp.getData(),0,dp.getLength()) + " from " + dp.getAddress() + ":" + dp.getPort();
System.out.println(message);
}
  }
}
但是现在有一个问题就是最后服务端输出的端口号并不是5000,而是随机的,这是为什么,在ds.receive(dp)后,dp的端口号难道没有变化吗?如果没有变化怎样在程序中实现获取客户端ip及端口?

解决方案 »

  1.   

    问题描述的极不清楚啊……有点前后矛盾的感觉
    是现在有一个问题就是最后服务端输出的端口号并不是5000,而是随机的,
    getPort
    public int getPort()返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的。 返回:
    返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的。至于后面的几个? 我实在没看懂说什么