如何在java中的udp(client,server)程序中设置客户端的端口号?

问题描述:

每次我运行客户端时,服务器都会告诉我一个不同的端口号。我搜查了一下,发现当我将端口设置为零时,它会查找可用端口,但我将其更改为我想要的号码public static final int MYPORT = 5555;,并且每次都从服务器获取新的端口号。如何在java中的udp(client,server)程序中设置客户端的端口号?

这是打印方法:

System.out.printf(" using port %d\n", receivePacket.getPort()); 

DatagramSocket socket = new DatagramSocket(null); 
SocketAddress localBindPoint = new InetSocketAddress(MYPORT); socket.bind(localBindPoint); 
SocketAddress remoteBindPoint = new InetSocketAddress(args[0], Integer.valueOf(args[1])); 
+1

尝试后(和缩进)你的代码更相关的部分。 – freedev

+0

添加它在您的文章,而不是在评论:) – freedev

+0

它已被编辑,你知道答案吗? – Sam

我想你忽略了一点,这段代码侦听端口5555:

在下面的代码的istruction packet.getPort()返回的端口号远程主机,该数据报正被发送到该远程主机或接收数据报的远程主机。

int MYPORT = 5555; 
    DatagramSocket dsocket = new DatagramSocket(MYPORT); 
    byte[] buffer = new byte[2048]; 

    // Create a packet to receive data into the buffer 
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length); 

    while (true) { 
    // Wait to receive a datagram 
    dsocket.receive(packet); 

    // Convert the contents to a string, and display them 
    String msg = new String(buffer, 0, packet.getLength()); 
    System.out.println(packet.getAddress().getHostName() + ": " 
     + msg); 

    // Reset the length of the packet before reusing it. 
    packet.setLength(buffer.length); 

    System.out.printf(" using port %d\n", packet.getPort()); 
    } 

我有双重检查本地:

sudo lsof -iUDP -n -P | grep 5555 
java  1606  freedev 5u IPv6 0x9ed7290ce134656f  0t0 UDP *:5555