Python套接字 - "阻塞"究竟是什么?套接字操作?

时间:2017-03-23 17:43:06

标签: python sockets

我正在使用套接字库来模拟通过网络发送数据包。

socket.settimeout()方法的文档说..

  

... socket.settimeout(value)   在阻塞套接字上设置超时   操作即可。 value参数可以是非负浮点表达式   秒,或无。如果给出了float,则后续的socket操作   如果超时期限值已经过去,将引发超时异常   在操作完成之前。将超时设置为无禁用   套接字操作超时。 s.settimeout(0.0)相当于   s.setblocking(0); s.settimeout(无)相当于   s.setblocking(1)。

阻塞套接字操作究竟是什么?它只是recv *来电,还是还包括发送电话?

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

阻止操作是无法在本地完全处理但可能需要等待连接对等方的操作。对于TCP套接字,因此这包括显然接受,连接和recv。但它还包括send:如果本地写入套接字缓冲区已满,send可能会阻塞,即不能再向其写入数据。在这种情况下,它必须等待对等体接收和确认足够的数据,以便从写缓冲区中删除这些数据,并再次有空间写入新数据。