相关疑难解决方法(0)

Windows上的python select.select()

我正在使用此处的代码测试UDP打孔。它可以在Linux上运行,但是会在Windows上报告错误。这是发生错误的代码片段:

while True:
    rfds, _, _ = select([0, sockfd], [], [])  # sockfd is a socket
    if 0 in rfds:
        data = sys.stdin.readline()
        if not data:
            break
        sockfd.sendto(data, target)
    elif sockfd in rfds:
        data, addr = sockfd.recvfrom(1024)
        sys.stdout.write(data)
Run Code Online (Sandbox Code Playgroud)

和错误消息:

Traceback (most recent call last):
  File "udp_punch_client.py", line 64, in <module>
    main()
  File "udp_punch_client.py", line 50, in main
    rfds, _, _ = select([0, sockfd], [], [])
select.error: (10038, '')
Run Code Online (Sandbox Code Playgroud)

我知道此错误与selectWindows 上的实现有关,每个人都引用以下内容:

注意 Windows上的文件对象是不可接受的,但套接字是可接受的。在Windows上,底层的select()函数由WinSock库提供,并且不处理不是源自WinSock的文件描述符。

所以我有两个问题:

  1. 是什么0在 …

python sockets windows select

5
推荐指数
2
解决办法
1万
查看次数

标签 统计

python ×1

select ×1

sockets ×1

windows ×1