2015-09-07 78 views
0

對於網絡套接字和Python相對來說比較新的,我一直在想是否可以編寫一個服務器(或者如果已經存在,那會更好)在Python中通過標準套接字(UDP)接收數據並通過Web套接字將數據轉發給瀏覽器?我注意到在使用龍捲風,你的主要的最後一行通常是:Python通過套接字接收數據並通過網絡套接字轉發它

tornado.ioloop.IOLoop.instance().start() 

它創建了一個「聽衆」循環,似乎阻止我接受對我的標準插孔的任何數據。是否有可能做到這一點?

回答

1

龍捲風沒有任何明確的API來處理UDP,但您可以用IOLoop.add_handler添加一個UDP套接字(下面的代碼是未經測試,但應該給你的基本概念):

def handle_udp(sock, events): 
    while True: 
     try: 
      data, addr = sock.recvfrom(bufsize) 
      # do stuff with data 
     except socket.error as e: 
      if e.errno in (errno.EAGAIN, errno.WOULDBLOCK): 
       # nothing more to read, return to the IOLoop 
       return 

sock = bind_udp_socket() 
sock.setblocking(0) 
IOLoop.current().add_handler(sock, IOLoop.READ) 
IOLoop.current().start() 
相關問題