【问题标题】:Python socket - what exactly are the "blocking" socket operations?Python套接字-“阻塞”套接字操作到底是什么?
【发布时间】:2017-03-23 17:43:05
【问题描述】:

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

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

... socket.settimeout(值) 在阻塞套接字上设置超时 操作。 value 参数可以是一个非负浮点数表示 秒,或无。如果给定一个浮点数,则后续的套接字操作 如果超时时间值已过,将引发超时异常 在操作完成之前。设置无超时禁用 套接字操作超时。 s.settimeout(0.0) 相当于 s.setblocking(0); s.settimeout(None) 相当于 s.setblocking(1).

阻塞套接字操作到底是什么?它只是 recv* 调用,还是还包括 send 调用?

提前谢谢你。

【问题讨论】:

    标签: python sockets


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-19
      • 2010-10-31
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 2012-06-13
      • 2021-03-03
      相关资源
      最近更新 更多