Java:从相同的UDP端口重复发送或为UDP Socket.send()指定localport

时间:2014-07-16 00:05:20

标签: 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()显示不同的端口。

2 个答案:

答案 0 :(得分:1)

是的,你可以。根据您的要求,有两种解决方案:

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

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

      

    DatagramSocket dSocket = new DatagramSocket(CLIENT_PORT);

答案 1 :(得分:0)

当然可以。您每次都在创建一个新套接字,并且从不关闭它,因此端口保持使用状态,因此新套接字会获得一个新端口。

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