Python通过套接字接收数据并通过web套接字转发



对web套接字完全陌生,对Python相对较新,我想知道是否有可能在Python中编写服务器(或者如果已经存在,那将更好),通过标准套接字(UDP)接收数据并通过web套接字转发该数据到浏览器?我注意到在使用Tornado时,main的最后一行通常是:

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

这会创建一个"监听器"循环,似乎会阻止我在标准套接字上接收任何数据。这可能吗?

Tornado没有任何用于处理UDP的显式api,但您可以使用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()

相关内容

  • 没有找到相关文章

最新更新