我正在尝试连接到远程服务器,但是当我使用远程服务器地址实现BindException
时,我得到DatagramSocket
。它适用于localhost。
dstAddress = new InetSocketAddress(server, servPort);
srcAddress = new InetSocketAddress(srcPort);
try{
sock = new DatagramSocket();
sock.setReuseAddress(true);
} catch (SocketException ex) {
}
public void connect() {
sock.bind(srcAddress);
sock.connect(dstAddress);
}
答案 0 :(得分:1)
您根本不必致电bind()
。创建DatagramSocket时,已经为您选择了一个端口。 connect()
也不是必需的,您可以选择在每个DatagramPacket中设置目标地址。
答案 1 :(得分:0)
源端口已在使用中。
答案 2 :(得分:0)
为scrPort
使用0。这将允许操作系统在绑定套接字时选择一个打开的端口。
答案 3 :(得分:0)
您无需致电bind()
或connect()
。源端口在DatagramSocket构造函数中选择(正如您已经完成的那样),并且在您发送的每个DatagramPacket中设置目标地址和端口。
例如,请参阅this。
答案 4 :(得分:0)
良好做法: - 如果不需要,请不要指定源端口。