游戏服务器编程(可靠且不可靠的通信)

时间:2015-09-21 17:22:06

标签: .net networking tcp udp server

我目前正在通过C#中的.NET套接字开发一个简单的在线多人游戏。

更确切地说,我试图围绕这个游戏创建网络通信结构 - 而不是游戏本身。现在我有一个工作的HTTP服务器来处理基本请求,例如"创建一个新的游戏实例(聚会)","加入一个现有的聚会"等

这很好用,但我真的不知道如何处理游戏实例中的通信。根据我的理解,应该有可靠的沟通和不可靠的沟通。就像发送"踢球员","暂停比赛","获得球员名单"请求(可靠)和发送输入,接收快照(不可靠)。

这是否意味着在不同的端口上运行两个单独的套接字(udp和tcp)是有意义的,所以我实际上有两个服务器与每个游戏实例进行通信?或者有没有办法通过一个udp插槽实现保证交付和不可靠的交付?

注意:我并没有真正瞄准有序数据包到达,因此对我来说可靠主要意味着确保数据包实际到达目的地

注意2:我真的不想用这个特定于游戏实例的可靠内容来打扰http服务器,在我看来,如果游戏实例可以自己处理它会更好

我看到This question here相似,但接受的答案对我没有帮助。我对答案的探索是:如何通过C#中的.NET套接字结合可靠和不可靠的通信?

1 个答案:

答案 0 :(得分:1)

您不一定要使用单独的端口 - 实际上,如果有必要,只使用一个来简化最终用户在其路由器上打开入站端口所需的任何指令,这将是一个优势。

查看libenet(http://enet.bespin.org)以获取一个开源库,该库负责通过一个端口进行多个连接。它支持有保证的有序和不可靠的流。