Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java的udp(客户端,服务器)程序中设置客户端的端口号?_Java_Sockets_Network Programming_Udp_Serversocket - Fatal编程技术网

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

如何在java的udp(客户端,服务器)程序中设置客户端的端口号?,java,sockets,network-programming,udp,serversocket,Java,Sockets,Network Programming,Udp,Serversocket,每次运行客户端时,服务器都会告诉我一个不同的端口号。我对此进行了搜索,发现当我将端口设置为零时,它会查找可用的端口,但我将其更改为我想要的编号publicstaticfinal int MYPORT=5555并且每次仍从服务器获取一个新端口号 这是打印方法: System.out.printf(" using port %d\n", receivePacket.getPort()); DatagramSocket socket = new DatagramSocket(null); Socke

每次运行客户端时,服务器都会告诉我一个不同的端口号。我对此进行了搜索,发现当我将端口设置为零时,它会查找可用的端口,但我将其更改为我想要的编号
publicstaticfinal int MYPORT=5555并且每次仍从服务器获取一个新端口号

这是打印方法:

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]));

我想你没抓住重点,这段代码在端口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

尝试发布(并缩进)代码中更相关的部分。将其添加到您的帖子中,而不是添加到注释中:)它已被编辑,您知道答案吗?我添加了一个代码示例,解释如何在端口
5555
上收听。你有什么:Mac,Linux,Windows?