Networking 使用winsock扫描局域网游戏服务器

Networking 使用winsock扫描局域网游戏服务器,networking,winsock,lan,winsockets,Networking,Winsock,Lan,Winsockets,我正试图找出如何使用winsockets将我的游戏变成一个局域网可玩的游戏。我已经阅读了一些winsockets文档,但我不知道客户端如何获得在LAN上创建的所有游戏 它是否必须尝试“连接”到LAN上的每个IP,比如尝试连接到192.168.0.1,然后连接到192.168.0.2,等等?有更好的方法吗?您可以使用广播在局域网上宣传您的服务器。然后,客户端可以监听这些广播以“查找”服务器 有关更多信息,请参见此处: 通常,这些游戏服务器使用本地UDP广播,这是所有客户端都可以接收并处理的,只要他

我正试图找出如何使用winsockets将我的游戏变成一个局域网可玩的游戏。我已经阅读了一些winsockets文档,但我不知道客户端如何获得在LAN上创建的所有游戏


它是否必须尝试“连接”到LAN上的每个IP,比如尝试连接到192.168.0.1,然后连接到192.168.0.2,等等?有更好的方法吗?

您可以使用广播在局域网上宣传您的服务器。然后,客户端可以监听这些广播以“查找”服务器

有关更多信息,请参见此处:

通常,这些游戏服务器使用本地UDP广播,这是所有客户端都可以接收并处理的,只要他们在收听


以下是我发现的一些您可能感兴趣的客户机和服务器代码示例:

首先,我建议您使用wireshark进行任何网络开发。它会告诉你什么包通过电线。它将让你看到其他游戏是如何做到这一点的,因为有很多方法可以做到这一点


使用UDP广播是一种方法。只需将目标ip的最后一个字节更改为255,就可以了。

我认为有两种方法可以做到这一点

  • 建立一个客户机和服务器连接的“大厅”,以便他们可以通过它找到彼此

  • 服务器广播UDP数据包。客户端侦听并更新服务器列表

  • 如果您需要一种快速简便的方法,第二种方法会很好,但是请记住,大多数UDP数据包都会被浪费,因为它们对于每个客户端只使用一次


    第一个选项是针对这个问题的更通用和可扩展的解决方案。然而,它可能需要更多的时间来设计和实现

    盲目更改最后一个字节并不总是有效的。它取决于网络上使用的实际子网掩码。生成广播地址的正确方法是使用本地计算机的IP,`和'使用子网掩码,然后'或'使用子网掩码的倒数'。或者,只需使用全局广播地址255.255.255.255,但并非所有防火墙/路由器都允许该地址通过。签出