2015-10-22 73 views
0

我有一個實時多人遊戲繼續開發(它目前在應用程序商店:https://itunes.apple.com/us/app/blewp!-eat-or-be-eaten-mmo/id996122625?mt=8),我使用TCP和UDP發送實時消息(TCP用於需要可靠性的消息,如玩家死亡) ,而我的服務器端是用Python編寫的,使用Twisted作爲服務器。我經常不得不迅速發送小包,並且禁用包排隊(Nagle的算法)應該幫助包快速到達。Python Twisted TCP socket如何設置TCP_NODELAY(禁用Nagle的算法)?

我做了扭曲了一些研究,發現此設置abstract.FileDescriptor下扭曲(文檔鏈接:http://twistedmatrix.com/documents/8.1.0/api/twisted.internet.tcp.Connection.html

我是很新的扭曲,所以可能有人告訴我如何實際調用這個設置,對於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) 

回答

2

一個Protocol對象有self.transport這就是你要找的FileDescriptor。此代碼應該做你想做的事:

class TCPProtocol(Protocol): 

    def connectionMade(self): 
     # add to list of connected clients 
     factory.clients.append(self) 
     self.transport.setTcpNoDelay(True) 
+0

謝謝你花時間回答這個問題。 –

相關問題