簡體   English   中英

扭曲協議,可同時處理TCP和UDP

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM