所以,正如标题可能暗示我在我的 Java 项目中遇到了一些麻烦。我想做的是这样的:
我需要做的是在 X 和 Y 之间建立连接。 例如,有人使用运行 X 的计算机,在发现过程后,他们将返回运行 Y 应用程序的计算机列表及其 IP,反之亦然。
我已经使用 UDP 广播完成了此操作,但有时会失败。电脑通过WiFi连接,所以基本上是通过路由器。在很多情况下,任何 X 计算机都可以通过我的 UDP 发现方法看到 Y 计算机,但有时不能,除非我手动指向 IP,有时甚至不会。
这是用于发现侦听特定端口的服务器的代码:
public static ArrayList<InetAddress> searchComputer() {
ArrayList<InetAddress> targets = new ArrayList<InetAddress>();
try {
c = new DatagramSocket();
c.setBroadcast(true);
byte[] sendData = "DISCOVER_PC_SERVER_REQUEST".getBytes();
try {
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("255.255.255.255"), 2005);
c.send(sendPacket);
} catch (Exception e) {}
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface networkInterface = (NetworkInterface) interfaces.nextElement();
if …Run Code Online (Sandbox Code Playgroud)