加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:18:49 所属栏目:Java 来源:网络整理
导读:我正在开发一款使用局域网的游戏.像大多数多人游戏一样,有一个服务器 客户端系统.计算机A运行程序实例,创建服务器并等待;计算机B做同样的事情.现在Computer C运行程序,我想要的是他可以看到计算机A和B在那里列为游戏服务器.我怎样才能做到这一点? 为了列出

我正在开发一款使用局域网的游戏.像大多数多人游戏一样,有一个服务器 – 客户端系统.计算机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等)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读