Python通过socket接收数据并通过webs转发

2024-04-20 10:55:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

它创建了一个“侦听器”循环,似乎阻止我在标准套接字上接收任何数据。有可能这样做吗?在


Tags: 数据instance服务器标准websocketsmain浏览器start
1条回答
网友
1楼 · 发布于 2024-04-20 10:55:49

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()

相关问题 更多 >