我正在尝试弄清楚如何使用 winsockets 将我的游戏变成 LAN 可玩游戏。我已经阅读了一些 winsockets 文档,但我无法弄清楚客户端如何获取在 LAN 上创建的所有游戏。
它是否必须尝试“连接”到 LAN 上的每个 IP,例如尝试连接到 192.168.0.1,然后是 192.168.0.2 等?有没有更好的办法?
我正在尝试弄清楚如何使用 winsockets 将我的游戏变成 LAN 可玩游戏。我已经阅读了一些 winsockets 文档,但我无法弄清楚客户端如何获取在 LAN 上创建的所有游戏。
它是否必须尝试“连接”到 LAN 上的每个 IP,例如尝试连接到 192.168.0.1,然后是 192.168.0.2 等?有没有更好的办法?
您将使用广播在 LAN 上宣传您的服务器。然后客户端可以收听这些广播以“找到”服务器。
有关更多信息,请参见此处:http: //tangentsoft.net/wskfaq/intermediate.html#broadcast
通常,这些游戏服务器使用本地 UDP 广播,这是所有客户端都会接收到的内容,并且只要他们正在收听它就可以进行处理。
这是我发现您可能感兴趣的一些示例客户端和服务器代码:http: //visual-c.itags.org/visual-c-c++/29424/
我认为有两种可能的方法可以做到这一点。
建立一个客户端和服务器连接的“大厅”,以便他们可以通过它找到彼此。
服务器广播 UDP 数据包。客户端侦听并更新服务器列表。
如果您需要一种快速简便的方法,则第二个选项会很棒,但请记住,大多数 UDP 数据包将被浪费,因为每个客户端仅使用一次。
第一个选项是解决这个问题的更通用和更广泛的解决方案。但是,它可能需要更多时间来设计和实施。
首先,我建议您使用wireshark 进行任何网络开发。它将向您显示通过电线的数据包。它可以让你看到其他游戏是如何做到的,因为有很多方法可以做到这一点。
使用 UDP 广播是一种方法。只需将目标ip的最后一个字节更改为255就可以了。