【发布时间】:2014-11-20 22:26:21
【问题描述】:
我有一个 Java 客户端服务器架构,其中服务器使用固定端口进行侦听。客户端可以使用服务器 ip 地址进行连接,但我想使用端口扫描网络,这样用户就不必处理服务器的 ip 地址。目前,我通过查看客户端的 ip 并使用客户端的 ip 循环到每个可能的地址来实现这一点(192.168.1.0 - 我在最后一部分循环通过 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) {
}
【问题讨论】:
-
局域网,“网络”是什么意思?如果服务器在 Internet 上怎么办?如果有多个服务器(例如用于测试目的)怎么办?我认为最好的解决方案是让用户指定服务器地址。空的 catch 块也是一个坏主意。
-
服务器只在局域网中,不在网络中
标签: java networking ip