2015-09-21 72 views
0

我目前正在C#中通过.NET套接字开发一个简单的在线多人游戏。游戏服务器编程(可靠和不可靠的通信)

更确切地说我试图创建一个围绕这场比赛的网络通信结构 - 与其说是比赛本身。现在我有一个工作的HTTP服务器,该服务器负责处理基本要求,如“创建一个新的游戏实例(聚会)”,“加入现有的党”等

这是工作正常,但我真的不知道如何处理游戏实例中的通信。根据我的理解,应该有可靠的沟通和不可靠的沟通。像发送“踢球员”,“暂停游戏”,“获得球员列表”请求(可靠)并发送输入,接收快照(不可靠)。

这是否意味着它将使意义有两个单独的插座(UDP和TCP)在不同的端口上运行,所以我实际上有两个服务器,每场比赛的情况下与沟通?或者有没有办法通过一个单一的udp套接字实现保证交付和不可靠交付?

注:我真的不瞄准到达有序分组,所以可靠的,我主要是指确保文实际到达目的地

注2:我真的不希望打扰的HTTP这个游戏实例具体可靠的东西的服务器,在我看来,这将是更好,如果游戏实例可以处理这个自己

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

回答

0

你不一定必须使用不同的端口 - 实际上这将是一个优势,只使用一个简化最终用户需要,如有需要,他们的路由器上打开入站端口的任何指令。

退房libenet(http://enet.bespin.org)一个开放源码库,负责多个连接超过一个端口。它支持有保证的顺序和不可靠的流。

+0

这看起来不错!这些在我的“方法”中针对每个游戏实例使用的多个端口也是最让我困扰的。 所以我想要走的路是只使用一个UDP套接字,并建立一个自定义的类似于TCP的结构,或者通过手动或使用库来实现。这样用户可以决定是否可靠地发送数据报。 – Jay