首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# MMO服务器结构

C# MMO服务器结构
EN

Stack Overflow用户
提问于 2013-10-06 22:28:43
回答 3查看 2K关注 0票数 0

我是在开始编写一个简单的mmo服务器的演示游戏。我正在使用UDP协议(UdpClient),但我想知道其他服务器是如何工作的?

  1. 只有一个处理所有连接的客户端和消息并响应它们的UDP客户端。
  2. 服务器为每个连接的播放器创建一个新的UDP客户端实例?

我已经测试了连接50个客户谁发送“平安”信息和服务器必须回答“乒乓”。第50次"Pong“的发送大约需要10秒(在本地主机上)(同时,服务器也应该将ping发送给第一玩家,这样队列就可以延长到几小时,这是荒谬的)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-07 06:13:57

其他服务器使用1),即从任何带有一个套接字的客户端监听(我假设每个UdpClient都有一个套接字)。此外:

  • 这个套接字应该在服务器的生存期内使用,即在使用一个数据报时不要创建一个新的套接字。
  • 接收和发送应该异步完成,这样接收/发送一个流就不会阻止接收/发送另一个流。
  • 注意您发送/接收的数据量--如果您从服务器向多个客户端发送/接收数据,则总数据量乘以客户端的数量。

在本地主机上执行上述操作(50个客户机发送ping并接收一个只有几个字节的pong )应该花费不到1ms,假设其他进程没有耗尽处理器。

票数 1
EN

Stack Overflow用户

发布于 2013-10-07 01:05:51

我将通过说我不知道MMO服务器的内部结构来限定我的答案。我有点惊讶,50平/乒乓需要10秒,我会认为,特别是在本地主机,它会更快。我怀疑您有某种问题,或者您的客户端初始化起来特别复杂。我建议您下载一些类似于Wireshark (http://www.wireshark.org/)的内容,并查看您的IP通信量,看看实际发生了什么。

如果您玩MMO,您也可以使用wireshark查看正在传输的数据包,并更好地了解它们的服务器正在做什么。

票数 0
EN

Stack Overflow用户

发布于 2013-12-28 23:58:39

你一定做错什么了。我编写了一个服务器,它每秒处理400万个ping/pong消息,每次消息的传递时间为10-20毫秒。我正在使用TCP协议。

我建议您阅读Beej的套接字编程指南,重写客户机/服务器网络代码,看看是否有更好的编号:http://beej.us/guide/bgnet/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19214719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档