【问题标题】:Finding near by devices on local Wi-Fi network for Windows Store multiplayer game在 Windows Store 多人游戏的本地 Wi-Fi 网络上查找附近的设备
【发布时间】:2015-07-20 12:14:25
【问题描述】:

我通过参考 3D Starterkit 项目示例,使用 C++ 和 DirectX(Xaml) 模板在 Visual Studio 2013 中为 Windows 应用商店开发了一款游戏。现在我想实现一个本地多人游戏功能,以便用户可以在连接到本地无线网络的两台 Windows 设备上实时播放。我是 Windows 平台和网络概念的新手。我在 Windows Developer Center 上搜索了运行相同应用程序的设备附近的浏览。我找到了两个样本,即。 Proximity 示例和 WiFiDirectDevice 示例。但是这些样本无法在设备附近找到。我想提出以下建议:

1) “Proximity”或“WiFiDirectDevice”示例能否满足我在本地网络上运行相同应用程序的设备附近浏览的要求?

2) 是否有其他更好的方法可以在运行相同应用程序的设备附近进行浏览? 我将不胜感激有关这些查询的任何建议。提前谢谢你。

【问题讨论】:

  • 您可以使用本机 WiFi 接口来执行此操作。请参考以下网址msdn.microsoft.com/en-us/library/windows/desktop/…
  • 让您的程序定期在一个众所周知的端口上发送一个 UDP 广播数据包并在该端口上侦听您的程序的其他实例发送的任何 UDP 数据包是否足够?使用 recvfrom() 接收传入的 UDP 数据包将为您提供 LAN 上任何其他实例的 IP 地址,并且您想要通信的任何其他信息都可以包含在 UDP 数据包中。

标签: c++ networking windows-8.1 multiplayer


【解决方案1】:

您可以使用原生 WiFI API 中的 WlanGetAvailableNetworkList 方法来获取可用网络的列表。您还可以托管一个软接入点并允许另一个客户端使用本机 WiFI API 加入。

dwResult = WlanGetAvailableNetworkList(hClient,
                                                 &pIfInfo->InterfaceGuid,
                                                 0, 
                                                 NULL, 
                                                 &pBssList);

https://msdn.microsoft.com/en-us/library/windows/desktop/ms706749(v=vs.85).aspx

【讨论】:

  • 感谢@JTsunami 的建议
  • 此 API 是否也适用于 ARM 设备(Surface RT)?我尝试在我的代码中使用这种方法,但是我得到了 wlanapi 方法和变量的标识符未找到或未定义标识符错误。我在代码中包含了 wlanapi.h" 文件和 #pragma comment(lib, "wlanapi.lib")"。仍然显示错误。我发现 wlanapi.lib 文件未显示在 Visual Studio 的链接器输入属性部分的项目的附加依赖项中. 我该如何解决这个问题?
  • 上述 API 不适用于 WIN RT 或 windows 商店应用程序。 msdn.microsoft.com/en-us/library/windows/apps/…这可能适用于您在 WinRT 设备上,但不确定。
  • 谢谢@JTsunami。在这种情况下,我想采用 JeremyFriesner 建议的 UDP 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 2019-04-28
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
相关资源
最近更新 更多