小编Kir*_*aft的帖子

LAN 上的点对点发现

所以,正如标题可能暗示我在我的 Java 项目中遇到了一些麻烦。我想做的是这样的:

  • 我有两台运行应用程序 X 的计算机
  • 还有另外三台计算机运行应用程序 Y

我需要做的是在 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)

java networking lan udp network-programming

5
推荐指数
1
解决办法
1746
查看次数

标签 统计

java ×1

lan ×1

network-programming ×1

networking ×1

udp ×1