微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java网络游戏:如何列出可用的服务器?

我正在开发一款使用局域网的游戏.像大多数多人游戏一样,有一个服务器 – 客户端系统.计算机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 举报,一经查实,本站将立刻删除。

相关推荐