您正在同一设备上发送和接收数据包 . 您可以分开发送和接收端口(例如,发送8001,接收8002) . 并将发送和接收代码作为单独的线程运行 . 如果两个设备必须找到彼此(或一个设备找到自己) .
import java.io.IOException;
import java.net.*;
接收:
private DatagramSocket getReceiveSocket() throws UnknownHostException, SocketException {
if (receiveSocket == null) {
receiveSocket = new DatagramSocket(8002, InetAddress.getByName("0.0.0.0")); // 0.0.0.0 for listen to all ips
receiveSocket.setBroadcast(true);
}
return receiveSocket;
}
public void receive() throws IOException {
// Discovery request command
byte[] buffer = "__DISCOVERY_REQUEST__".getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
getReceiveSocket().receive(packet);
System.out.println("Discovery package received! -> " + packet