我正在使用套接字库来模拟通过网络发送数据包。
socket.settimeout()方法的文档说..
... socket.settimeout(value) 在阻塞套接字上设置超时 操作即可。 value参数可以是非负浮点表达式 秒,或无。如果给出了float,则后续的socket操作 如果超时期限值已经过去,将引发超时异常 在操作完成之前。将超时设置为无禁用 套接字操作超时。 s.settimeout(0.0)相当于 s.setblocking(0); s.settimeout(无)相当于 s.setblocking(1)。
阻塞套接字操作究竟是什么?它只是recv *来电,还是还包括发送电话?
提前谢谢你。
答案 0 :(得分:1)
阻止操作是无法在本地完全处理但可能需要等待连接对等方的操作。对于TCP套接字,因此这包括显然接受,连接和recv。但它还包括send:如果本地写入套接字缓冲区已满,send可能会阻塞,即不能再向其写入数据。在这种情况下,它必须等待对等体接收和确认足够的数据,以便从写缓冲区中删除这些数据,并再次有空间写入新数据。