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