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吗?
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
科技程序迷
2013-10-18 · TA获得超过2822个赞
知道大有可为答主
回答量:2240
采纳率:0%
帮助的人:1841万
展开全部
通过发送广播消息。然后接收广播消息回应。
则可以根据规则判断客户端的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协议通信获得主机信息而已嘛。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
man1473
2013-10-18 · TA获得超过223个赞
知道答主
回答量:155
采纳率:0%
帮助的人:110万
展开全部
socket.getInetAddress();?????
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式