【发布时间】:2016-01-22 03:12:46
【问题描述】:
我有一个实时多人游戏正在持续开发中(它目前在应用商店中上线:https://itunes.apple.com/us/app/blewp!-eat-or-be-eaten-mmo/id996122625?mt=8),我同时使用 TCP 和 UDP 发送实时消息(TCP 用于需要可靠性的消息,例如玩家死了),我的服务器端是用 python 编写的,使用 Twisted 作为服务器。我经常需要快速发送小数据包,并且禁用数据包队列(Nagle 的算法)应该有助于让数据包更快地到达。
我对twisted做了一些研究,发现这个设置在twisted的abstract.FileDescriptor下(文档链接:http://twistedmatrix.com/documents/8.1.0/api/twisted.internet.tcp.Connection.html)
我对 Twisted 很陌生,所以有人能告诉我如何为 TCP 协议服务器实际调用此设置吗?我找不到可以访问 FileDescriptor 的位置。 :(
一行示例代码会很好,建议总是很感激;)
这是我为帮助解释问题而制作的一个简单示例:
class TCPProtocol(Protocol):
def connectionMade(self):
#add to list of connected clients
factory.clients.append(self)
'''HELP HERE PLEASE!!!'''
'''EG. self.NO_DELAY=True HOW DO I SET THIS?'''
def dataReceived(self, data):
pass
def sendData(self, data):
self.transport.write(data)
#setup factory and TCP protocol class
factory = Factory()
factory.protocol = TCPProtocol
factory.clients = []
reactor.listenTCP(1959, factory)
【问题讨论】:
标签: python algorithm sockets tcp