【问题标题】:C# Server / Client Application for Universal Windows Platform (UWP) apps通用 Windows 平台 (UWP) 应用程序的 C# 服务器/客户端应用程序
【发布时间】:2015-08-20 17:57:07
【问题描述】:
我需要设计一款将在 Windows Store 上架并让人们
下载并离线玩。
- 他们只需要在同一个 wifi 网络中就可以使用 UDP 找到彼此。
- 一个玩家将是主机,而其他玩家将是客户端。
- 所有客户端都将从主机发送/接收数据
我的问题是,
UWP 是否支持 UDP 通信,就像那些基于 Windows 的客户端/服务器聊天程序一样,可以使用 UDP 发现主机。
游戏中的每一个动作都需要从主机发送/接收,什么是最好的通信方式?过去我会构建一个 ServiceHost 并使用 WCF 进行主机和客户端之间的通信。但似乎 UWP 没有这样的库。
我会将游戏记录,包括所有玩家的每一步移动都存储到主机设备中(一旦有互联网访问,它将上传到云端)。我应该将它保存到 SQLite 还是 SQL Server Compact?
感谢您的帮助。
迈克尔
【问题讨论】:
标签:
c#
wcf
client-server
win-universal-app
uwp
【解决方案1】:
UWP 是否支持 UDP 通信,就像那些基于 Windows 的
客户端/服务器聊天程序,可以使用UDP发现主机
UWP 有 DatagramSocket 来支持 UDP 通信。但是要发现主机,您需要使用蓝牙和 WiFi-direct 等对等技术。在 UWP 中,你可以使用PeerFinder class。
游戏过程中的每一个动作都需要从主机发送/接收,
最好的沟通方式是什么?
WCF 有点重,如果逻辑不是很复杂,原始数据(字节)通信应该足够了。
我会存储游戏记录,包括所有玩家的每一步移动到
主机的设备(一旦有互联网就会上传到云端
使用权)。我应该将它保存到 SQLite 还是 SQL Server Compact?
您可以将记录存储在 SQLite 中,也可以将数据保存在纯文本文件中。我推荐使用 SQLite。
参考资料:
DatagramSocket sample
【讨论】:
-
感谢您提供的信息。这很有帮助。关于“原始数据通信”,是不是我在示例StreamSocket Sample 中找到的“StreamSocket”?我们团队的大多数成员都是网络程序员,我看到 Windows 10 IoT 可以将 Node.js 嵌入到 App 中,我的 UWP 是否也可以嵌入 Node.js?这样我们就可以使用 HTTP get/post 进行数据通信。谢谢。