UDP正在检索另一个对等方的端口号(Java)
我正在开发一个使用UDP的聊天应用程序。获取另一个对等方的端口号时出现问题。我可以获取对等方的主机地址,但无法获取响应/请求来自的端口。可以获取向我发送请求/响应的对等方的端口号 这是我的密码:UDP正在检索另一个对等方的端口号(Java),java,sockets,udp,peer,Java,Sockets,Udp,Peer,我正在开发一个使用UDP的聊天应用程序。获取另一个对等方的端口号时出现问题。我可以获取对等方的主机地址,但无法获取响应/请求来自的端口。可以获取向我发送请求/响应的对等方的端口号 这是我的密码: private Thread bcastListen = new Thread(PeerDiscovery.class.getSimpleName() + " broadcast listen thread") { @Override public void run()
private Thread bcastListen = new Thread(PeerDiscovery.class.getSimpleName()
+ " broadcast listen thread") {
@Override
public void run() {
try {
byte[] buffy = new byte[5];
buffy[2] = (byte) 4000;
DatagramPacket rx = new DatagramPacket(buffy, buffy.length);
while (!shouldStop) {
try {
buffy[0] = 0;
bcastSocket.receive(rx);
int recData = decode(buffy, 1);
if (buffy[0] == QUERY_PACKET && recData == group) {
byte[] data = new byte[5];
data[0] = RESPONSE_PACKET;
encode(peerData, data, 1);
DatagramPacket tx
= new DatagramPacket(data, data.length, rx.getAddress(), port);
System.out.println(peerData);
lastResponseDestination = rx.getAddress();
bcastSocket.send(tx);
} else if (buffy[0] == RESPONSE_PACKET) {
if (responseList != null && !rx.getAddress().equals(lastResponseDestination)) {
synchronized (responseList) {
responseList.add(new Peer(rx.getAddress(), rx.getPort())); //here am trying to get the port of the host which the response came from (Doesn't work)
}
}
}
} catch (SocketException se) {
System.out.println("Some exception");
}
}
bcastSocket.disconnect();
bcastSocket.close();
}
谢谢您的时间。传入数据报的源地址可通过
DatagramPacket.getPort()
获得
但不是港口
我不知道为什么不能。你是否考虑咨询JavaDoc?
注意:做你正在做的事情的简单方法就是发送收到的数据包。不需要再建造一个
bcastSocket.disconnect();
您尚未调用bcastSocket.connect()
,因此这行代码是无效的。移除它