套接字错误: [Errno 102] 套接字不支持该操作

8

I'm using Python on Mac.

But the below code

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('127.0.0.1', 443))
s.listen(2048)

遇到问题。
Traceback (most recent call last):
  File "attacker.py", line 5, in <module>
    s.listen(2048)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 102] Operation not supported on socket

如何解决这个问题?

1
你需要使用 SOCK_STREAM 而不是 DGRAM 来创建一个监听套接字。 - cdarke
令人惊讶的是,在Python套接字文档中关于listen的部分没有任何内容--- socket.listen([backlog]) 启用服务器以接受连接。如果指定了backlog参数,则它必须至少为0(如果低于0,则设置为0);它指定系统在拒绝新连接之前允许的未接受连接数。如果未指定,则选择一个默认合理值。 - Craig Hicks
1个回答

17

您正在使用udp套接字(SOCK_DGRAM),udp不会监听连接,而是在自己的端口上接收每个消息。请使用recvfrom接收udp消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接