【问题标题】:Java: send repeatedly from same UDP port or specify localport for UDP Socket.send()Java:从同一个 UDP 端口重复发送或为 UDP Socket.send() 指定本地端口
【发布时间】:2014-07-16 08:22:27
【问题描述】:

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

【问题讨论】:

    标签: java sockets udp datagram


    【解决方案1】:

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

    1. 如果你想从一个随机端口发送数据包,但每次都是同一个端口,不要像上一个答案中提到的那样关闭套接字。

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

      DatagramSocket dSocket = new DatagramSocket(CLIENT_PORT);

    【讨论】:

      【解决方案2】:

      当然可以。你每次都在创建一个新的套接字,并且永远不会关闭它,所以端口一直在使用,所以新的套接字会得到一个新的端口。

      如果你想要相同的端口,使用相同的套接字。

      【讨论】:

        猜你喜欢
        • 2013-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 2018-06-26
        • 2013-10-18
        • 1970-01-01
        相关资源
        最近更新 更多