2010-07-08 34 views
6

我想弄清楚如何使用winsockets将我的游戏变成局域网可玩的游戏。我已经阅读了一些winsocket文档,但我无法弄清楚客户端如何获得在局域网上创建的所有游戏。使用winsock扫描局域网游戏服务器

是否必须尝试'连接'到局域网上的每个IP,如试图连接到192.168.0.1,然后192.168.0.2等?有没有更好的办法?

+0

退房http://en.wikipedia.org/wiki/Broadcast_address – 2010-07-08 23:24:51

回答

2

通常,这些游戏服务器使用本地UDP广播,这是所有客户端接收和,只要能处理他们正在听它的东西。

下面是一些简单的客户端和服务器的代码,我发现,可能是你的兴趣:http://visual-c.itags.org/visual-c-c++/29424/

0

首先,我建议你得到Wireshark的任何联网的发展。它会告诉你什么包通过电线。它可以让你看到其他游戏如何做,因为有很多方法可以做到这一点。

使用UDP广播是一种方法。只需将目标IP的最后一个字节更改为255即可。

+4

盲目地改变最后一个字节不会总是工作。这取决于网络上使用的实际子网掩码。生成广播地址的正确方法是使用本地计算机的IP,并将其与子网掩码一起使用,然后将其与子网掩码的反向进行“或”运算。或者,只需使用全球广播地址255.255.255.255,但并非所有防火墙/路由器都允许通过该地址。 – 2010-07-13 01:28:33

2

我认为有两种可能的方法来做到这一点。

  1. 制作客户端和服务器连接的“大厅”,以便通过它们互相找到对方。

  2. 服务器广播UDP数据包。客户端监听并更新服务器列表。

如果你需要一个快速简便的方法,第二个选项将是巨大的,但reme​​ber,因为它们是为每个客户只能使用一次最UDP数据包将被浪费。

第一个选项是对此问题的更一般和可扩展的解决方案。但是,它可能需要更多时间来设计和实施。