任意数量的套接字 - Python
Arbitrarily large number of sockets - Python
我最近开始搜索套接字编程,并决定使用python进行测试。我有以下问题:正如我所读,您只能在服务器端套接字中侦听有限数量的连接,因此您一次只能运行这样数量的连接。有没有一种方法可以保持系统可以容忍的尽可能多的套接字打开?那就是例如在聊天服务器的情况下(例如,您不希望一次只有 5 个活跃用户)。
有什么解决办法?是否应该创建更多套接字来实现这一目标?但是,系统可用的端口数量会是下一个限制吗?
如果你问的是函数 'listen':
'backlog' argument is the maximum length to which the queue of pending connections for socket may grow.
If a connection request arrives when the queue is full, the client may receive an error with an indication of ECONNREFUSED or, if the underlying protocol supports retransmission, the request may be ignored so that a later reattempt at connection succeeds.
这不会对套接字连接数设置任何限制。只有那些还没有 'accept'-ed 的(例如,还没有变成 'connection')。
当客户端尝试连接时,积压增加 1。
当您调用 'accept' 时,积压减少 1。
因此,如果您定期调用 'accept',您将打开许多连接。
我最近开始搜索套接字编程,并决定使用python进行测试。我有以下问题:正如我所读,您只能在服务器端套接字中侦听有限数量的连接,因此您一次只能运行这样数量的连接。有没有一种方法可以保持系统可以容忍的尽可能多的套接字打开?那就是例如在聊天服务器的情况下(例如,您不希望一次只有 5 个活跃用户)。
有什么解决办法?是否应该创建更多套接字来实现这一目标?但是,系统可用的端口数量会是下一个限制吗?
如果你问的是函数 'listen':
'backlog' argument is the maximum length to which the queue of pending connections for socket may grow.
If a connection request arrives when the queue is full, the client may receive an error with an indication of ECONNREFUSED or, if the underlying protocol supports retransmission, the request may be ignored so that a later reattempt at connection succeeds.
这不会对套接字连接数设置任何限制。只有那些还没有 'accept'-ed 的(例如,还没有变成 'connection')。
当客户端尝试连接时,积压增加 1。
当您调用 'accept' 时,积压减少 1。
因此,如果您定期调用 'accept',您将打开许多连接。