我正在开发一款使用局域网的游戏.像大多数多人游戏一样,有一个服务器 – 客户端系统.计算机A运行程序实例,创建服务器并等待;计算机B做同样的事情.现在Computer C运行程序,我想要的是他可以看到计算机A和B在那里列为游戏服务器.我怎样才能做到这一点?
为了列出所有可用的服务器,一个简单的解决方案可能就是:我需要检查特定范围内的所有IP地址,看看它们是否通过我的特定端口进行响应.如果是,那么就会在其上运行一个游戏实例,并且应该列在服务器列表中.
上面描述的解决方案是好的吗?
我搜索并得到这段代码:
public void checkHosts(String subnet){
int timeout=1000;
for (int i=1;i<254;i++){
String host=subnet + "." + i;
if (InetAddress.getByName(host).isReachable(timeout)){
System.out.println(host + " is reachable");
}
}
}
最佳答案
使用以下任一方法发送发现消息
>一个多播(使用java.netMulticast套接字)
>广播(使用java.net.DatagramSocket)到网络广播地址
让所有服务器监听并回复说“我在这里”并可能有更多信息用于进一步的连接设置(服务器名称,版本,使用端口x,udp或tcp等)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。