我正在为演示游戏编写一个简单的 mmo 服务器。我正在使用 UDP 协议(UdpClient),但我想知道其他服务器是如何工作的?:
- 只有 1 个 UDP 客户端处理所有连接的客户端和消息并响应它们
- 服务器为每个连接的播放器创建一个新的 UDP 客户端实例?
我已经测试了连接 50 个发送“Ping”消息的客户端,服务器必须回复“Pong”。第 50 个“Pong”发送大约需要 10 秒(在本地主机上)(同时,服务器应该也向第一个玩家发送 ping,因此队列可以延长到几个小时,这是荒谬的)
我正在为演示游戏编写一个简单的 mmo 服务器。我正在使用 UDP 协议(UdpClient),但我想知道其他服务器是如何工作的?:
我已经测试了连接 50 个发送“Ping”消息的客户端,服务器必须回复“Pong”。第 50 个“Pong”发送大约需要 10 秒(在本地主机上)(同时,服务器应该也向第一个玩家发送 ping,因此队列可以延长到几个小时,这是荒谬的)
其他服务器使用 1) 即使用一个 Socket 从任何客户端监听(我假设每个 UdpClient 都有一个)。此外:
在 localhost 上执行上述操作,50 个客户端发送 ping 并接收只有几个字节的 pong 应该花费不到 1 毫秒,假设其他一些进程没有最大化处理器。
我将通过说我不知道 MMO 服务器的内部结构来限定我的答案。我觉得 50 ping/pongs 需要 10 秒,我有点惊讶,尤其是在 localhost 上它会快得多。我怀疑您有某种问题,或者您的客户可能特别难以初始化。我建议您下载 Wireshark ( http://www.wireshark.org/ ) 之类的东西,然后查看您的 IP 流量以了解实际情况。
如果您玩 MMO,您还可以使用 wireshark 查看正在传输的数据包,并更好地了解他们的服务器在做什么。
你一定做错了什么。我编写了一个服务器,每秒处理 400 万条 ping/pong 消息,每条消息的传递时间为 10-20 毫秒。我正在使用 TCP 协议。
我建议你阅读 Beej 的套接字编程指南,重写你的客户端/服务器网络代码,看看你是否能得到更好的数字: http ://beej.us/guide/bgnet/