Java:从同一UDP端口重复发送或为UDP Socket.send()指定本地端口

标签 java sockets udp datagram

是否可以在多个 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() 都会显示不同的端口。

最佳答案

是的,你可以。根据您想要执行的操作,有两种解决方案:

  1. 如果您想从随机端口但每次都使用同一端口发送数据包,请不要像前面的答案中提到的那样关闭套接字。

  2. 如果您还想选择要发送的端口,请创建 DatagramSocket 为:

    DatagramSocket dSocket = new DatagramSocket(CLIENT_PORT);

关于Java:从同一UDP端口重复发送或为UDP Socket.send()指定本地端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770120/

相关文章:

java - 如何从 String 转换为原始类型或标准 java 包装类型

java - Wireshark捕获数据包但JAVA应用程序不捕获

java - 实时屏幕共享到 Java 应用程序(本地主机)

c# - 处理关闭/断开网络套接字连接(CloseAsync 与 CloseOutputAsync)

sockets - 301 与 socket.http 永久移动

c - 发送套接字 c ctrl+c 行为

c - 如何用c语言为实时linux操作系统创建一个中断服务函数?

python - 通过 UDP 数据包发送字节,无需进一步转换

java - Ebean或Siena有多成熟?

java - 如何从 Grails 中的 Http 响应获取 boolean 值