[英]Twisted protocol that simultaneously handles TCP and UDP at once
考慮我的邏輯,我想做的事情與我選擇的傳輸方式無關-我希望UDP和TCP能夠正常工作。 通常,如果我正在使用TCP或SSL,這有點瑣碎。 但是,使用UDP(無工廠)和TCP(使用工廠),會變得有些棘手嗎?
from twisted.internet.protocol import Factory, ServerFactory, Protocol, DatagramProtocol
from twisted.internet import reactor
class SpecialServerProtocol(DatagramProtocol, Protocol):
def datagramReceived(self, datagram, address):
print("Received udp")
self.transport.write(datagram, address)
def dataReceived(self, data):
print("Received tcp")
self.transport.write(data)
class SpecialServerFactory(ServerFactory):
protocol = IPBusServerProtocol
def main():
reactor.listenTCP(8000, SpecialServerFactory())
reactor.listenUDP(8000, SpecialServerProtocol())
reactor.run()
if __name__ == '__main__':
main()
這是我設法獲得的一些代碼,它似乎按預期工作(我認為)。 我不清楚這是否真的是一件好事,還是我應該從TCP / UDP中分離出相同的邏輯並將其傳遞給與調用它們無關的一系列函數。
TCP是面向連接的,這意味着您將收到有關連接開始,何時到達數據以及何時結束的通知。 UDP不是; 您只是從各個同伴那里獲取了大塊數據,這些數據可能隨時出現或消失而沒有任何通知。 因此,您不能在TCP和UDP上使用相同的協議。 您需要UDP版本和TCP版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.