检测服务器IP地址

时间:2014-09-26 01:14:45

标签: java networking ip

我在Java中有一个客户端服务器体系结构,服务器使用固定端口进行侦听。客户端可以使用服务器IP地址连接,但我想使用端口扫描网络,以便用户不必处理服务器的IP地址。目前,我通过查看客户端的ip并使用客户端的ip(192.168.1.0 - I循环到1-255,最后一部分)循环到每个可能的地址来实现这一点。这种方法有效但是在java中有更好的方法吗?

  for (int a = 0; a < 256; a++) {
       try {
          String ServerIp = clientIpLast3Parts + "." + a;
          InetAddress IPAddress = InetAddress.getByName(ServerIp);
          DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, PORT);
          clientSocket.send(sendPacket);
          DatagramPacket receivePacket = new DatagramPacket(
                                    receiveData, receiveData.length);
          clientSocket.receive(receivePacket);
          InetAddress ServerIp = receivePacket.getAddress();
          String modifiedSentence = new String(receivePacket.getData());
          ip = ServerIp.getHostAddress().toString();

          if (modifiedSentence != null) {
              //Got it
              break;
           }

        } catch (Exception e1) {
   }

1 个答案:

答案 0 :(得分:0)

如果您需要自动重新配置拓扑,我建议您使用多播通知。服务器发送周期性组播数据包及其指定的单播IP和端口。任何客户端在启动时都会侦听该组播组,直到收到服务器IP /端口的数据包为止。或者使用DNS:)