2013-02-11 53 views
0

我已经写了各种网络程序,如聊天和游戏,但用户总是不得不输入服务器的IP,这是非常不寻常的。 我想实现一个服务器浏览器,你可以从普通游戏中知道,它可以自动在局域网中定位服务器。我想用Java来做。服务器浏览器如何在游戏中工作?

我的问题是:

那个浏览器是如何工作的?还有WiFi,例如,所有可以自动找到另一方的东西。

它是可能的,也是一个很好的方法来广播状态包到整个局域网?哪些时间间隔会有用?

+0

对于互联网服务器列表,我认为游戏公司可能有一个配置好的入口点服务器,他们可以在其中发现其他可用的服务器。 – cjstehno 2013-02-11 17:40:26

+0

我想象一下游戏服务器在特定的端口上侦听传入的连接。因此,对主机当前子网上的端口(或端口范围)进行简单扫描就可以解决问题。 – 2013-02-11 17:55:53

回答

1

对于WiFi,设备会侦听某个频率范围并扫描信号的范围。这与电视用来接收电台的过程大致相同,或者一个人可能会找到当地的广播电台。

对于网络游戏服务器,您无法扫描整个互联网。通常,这些服务提供了一个主服务器,该服务器被配置为在已知端口上发送服务器列表。通常它也将允许服务器更新他们的信息。

对于本地游戏服务器,通常每隔几秒钟就有一个单独的数据包。即使在空闲网络上有各种服务请求这类数据(Apple的发现协议,Bonjour和Windows网络发现协议一样常见),实际上还是有很多流量。

+0

WiFi:正在寻找网络的客户端是否在频率或接入点上侦听? – user1229027 2013-02-11 18:18:55

+0

客户端扫描由接入点广播的SSID的频率。 – 2013-02-11 18:20:55

+0

@PhilipWhitehouse,这是错误的。扫描无线网络不仅仅是改变频道和收听。您的计算机会在它尝试查找哪些网络可用时发送它所了解的网络的探测帧。 AP通常发送信标包,但不需要。许多人关闭这些,以便该人必须知道网络的SSID加入它。 (尽管这并不完美,因为您可以只是侦听探测包并找出可能存在的网络。) – Brad 2013-02-12 14:32:24

0

对于网络游戏,有一套中央服务器托管建立游戏所需的信息。在过去,这通常只是托管游戏的人的IP地址和端口,以及任何游戏信息,例如名称,地图等。

这些天由于防火墙/ NAT问题和问题与作弊,大多数网络游戏实际上也通过这些服务器发送他们的数据。这样做很昂贵。

对于本地网络上的游戏,将UDP数据包发送到广播地址,广播地址由该子网上的所有设备接收。主机游戏向数据包发送关于连接位置的信息,加入的用户接收这些数据包以知道游戏服务器的位置。然后他们直接连接到游戏服务器。

如果你在一个IP网络上,并且你的地址是192.168.1.100,子网掩码是255.255.255.0,那么你的广播IP地址是192.168.1.255。另请参阅:http://en.wikipedia.org/wiki/Broadcast_address#IP_networking