java socket连接中,搜索服务端ip和端口问题
在局域网内存在两个服务端,端口号知道的情况下,有什么方法可以快速搜索到两个服务端的ip。关于服务端的一切信息都不知道,只知道服务端的端口号是多少,privateStrin...
在局域网内存在两个服务端,端口号知道的情况下,有什么方法可以快速搜索到两个服务端的ip。
关于服务端的一切信息都不知道,只知道服务端的端口号是多少,
private String search() {
Socket socket = null;
for (Integer i = 0; i < 255; i++) {
String ip = "192.168.66." + i.toString();
try {
System.out.println(ip);
socket = new Socket(ip, 8088);
return ip;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
这样也可以找到一个服务端,但效率太低了,有什么好的方法或是算法来搜索服务端ip吗? 展开
关于服务端的一切信息都不知道,只知道服务端的端口号是多少,
private String search() {
Socket socket = null;
for (Integer i = 0; i < 255; i++) {
String ip = "192.168.66." + i.toString();
try {
System.out.println(ip);
socket = new Socket(ip, 8088);
return ip;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
这样也可以找到一个服务端,但效率太低了,有什么好的方法或是算法来搜索服务端ip吗? 展开
若以下回答无法解决问题,邀请你更新回答
2个回答
展开全部
通过发送广播消息。然后接收广播消息回应。
则可以根据规则判断客户端的IP地址。
具体如何实现还看你自己。
则可以根据规则判断客户端的IP地址。
具体如何实现还看你自己。
追问
刚学socket连接,能写一写具体的代码吗
追答
呵呵,好吧,给你关键代码。
客户端:
// step1 建立DatagramSocket
// step2 建立DatagramPacket
// step3 发送DatagramPacket
// step5 调用DatagramSocket接收回应
// step6 解析收到的DatagramPacket数据包,得到目标主机的IP地址和端口
// step7 调用Socket进行连接。
DatagramSocket dgSocket = new DatagramSocket(8810); // 绑定本地8810端口
byte[] request = "你好,我是客户端1234".getBytes();
InetSocketAddress destAddress = new InetSocketAddress("255.255.255.255", 8820); // 目标广播地址+目标端口
DatagramPacket dgPacket = new DatagramPacket(request, request.length, destAddress); // 数据包
dgSocket.send(dgPacket); // 发送查找服务器请求UDP包
byte[] response = new byte[32]; // 响应的字节数据缓冲区
dgPacket = new DatagramPacket(response, request.length, destAddress);
dgSocket.received(dgPacket); // 堵塞式接收响应,这里一般要加超时处理,我就不做了
// 如下代码忽略,收到的数据放在response数组,转字符串再处理下就可以得到目标主机的信息
服务端:
// 建立DatagramSocket
// 建立DatagramPacket
// 调用DatagramSocket接收客户端请求
// 构建回应数据包
// DatagramSocket回应客户端请求
其实没什么复杂的,主要是使用UDP协议通信获得主机信息而已嘛。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
socket.getInetAddress();?????
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询