请解释套接字缓冲区

时间:2009-08-15 19:38:38

标签: python sockets stackless python-stackless

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

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

据我所知 - 它从缓冲区读取5个字节,然后用它做东西......

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

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

艾伦

3 个答案:

答案 0 :(得分:13)

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

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

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

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

注意 ..如果将待办事项设置为5个连接,将删除以下连接(第6个,第7个等),并且连接套接字将收到错误连接消息(类似“主机主动拒绝连接”消息)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

  

socket.listen(backlog)

     

听取与之建立的联系   插座。 backlog参数指定   最大排队数   连接,至少应为1;   最大值取决于系统   (通常是5)。