是否可以在多个 socket.send() 上使用相同的端口或在创建 DatagramSocket 时指定端口?如果是这样怎么办。我正在尝试打洞,需要从所使用的端口进行监听,但我无法更改客户端发送的端口。
try {
DatagramSocket dSocket = new DatagramSocket();
InetAddress serverAddr = InetAddress.getByName(TARGETIP)
int msg_len = currentMsg.length();
byte[] message = currentMsg.getBytes();
DatagramPacket dPacket = new DatagramPacket(message,msg_len,serverAddr,3222);
dSocket.send(dPacket);
updateConversationHandler.post(new systemUIUpdate("UDP Packet from " + dSocket.getLocalPort()));
}
catch (Exception e){
e.getMessage();
e.printStackTrace();
}
每次通过事件处理程序运行时,dSocket.getLocalPort() 都会显示不同的端口。
最佳答案
是的,你可以。根据您想要执行的操作,有两种解决方案:
如果您想从随机端口但每次都使用同一端口发送数据包,请不要像前面的答案中提到的那样关闭套接字。
如果您还想选择要发送的端口,请创建
DatagramSocket
为:DatagramSocket dSocket = new DatagramSocket(CLIENT_PORT);
关于Java:从同一UDP端口重复发送或为UDP Socket.send()指定本地端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770120/