Java 检测服务器IP地址

Java 检测服务器IP地址,java,networking,ip,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 Server

我有一个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) {
   }
for(int a=0;a<256;a++){
试一试{
字符串ServerIp=clientIpLast3Parts+“+a;
InetAddress IPAddress=InetAddress.getByName(服务器IP);
DatagramPacket sendPacket=新的DatagramPacket(sendData,sendData.length,IPAddress,PORT);
clientSocket.send(sendPacket);
DatagramPacket ReceivePackage=新DatagramPacket(
receiveData,receiveData.length);
clientSocket.receive(receivePacket);
InetAddress服务器IP=receivePacket.getAddress();
String modifiedcentence=新字符串(receivePacket.getData());
ip=ServerIp.getHostAddress().toString();
if(modifiedcentence!=null){
//明白了
打破
}
}捕获(异常e1){
}

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

您所说的“网络”是什么意思,LAN?如果服务器在Internet上怎么办?如果有多台服务器(例如用于测试目的)怎么办?我认为最好的解决方案是让用户指定服务器地址。空的catch块也是个坏主意。服务器只在LAN中,不在Internet中