1

我试图找到有关套接字编程的示例并遇到了这个脚本: http ://stacklessexamples.googlecode.com/svn/trunk/examples/networking/mud.py

阅读此脚本时,我发现了这一行:listenSocket.listen(5)

据我了解-它从缓冲区中读取 5 个字节,然后对其进行处理...

但是如果另一端发送了超过 5 个字节会发生什么?

在该脚本的另一个地方,它会根据 4 个命令检查输入,并查看字符串中是否有 \r\n。不要像“look”这样的命令加上 \r\n 组成超过 5 个字节?

艾伦

4

3 回答 3

13

以下内容通常适用于套接字,但它应该有助于回答您有关在 Python 中使用套接字的具体问题。

socket.listen() 用于服务器套接字以侦听传入的连接请求。

传递给listen的参数称为backlog,它表示套接字应该接受多少连接并将其放入待处理的缓冲区中,直到您完成对accept()的调用。这适用于在您调用listen() 和完成对accept() 的匹配调用之间等待连接到服务器套接字的连接。

因此,在您的示例中,您将积压工作设置为 5 个连接。

注意.. 如果您将积压设置为 5 个连接,以下连接(第 6 个、第 7 个等)将被丢弃,并且正在连接的套接字将收到错误连接消息(类似于“主机主动拒绝连接”消息)

于 2009-08-15T19:42:20.710 回答
0

这可能有助于您理解代码:http ://www.amk.ca/python/howto/sockets/

于 2009-08-15T19:43:31.970 回答
0

的参数不是要读取或缓冲的字节数,5而是:listenSocket.listenbacklog

socket.listen(backlog)

监听到套接字的连接。backlog 参数指定排队连接的最大数量,应至少为 1;最大值取决于系统(通常为 5)。

于 2009-08-15T19:45:13.560 回答