【问题标题】:EWOULDBLOCK Error in socket programming套接字编程中的 EWOULDBLOCK 错误
【发布时间】:2012-08-09 07:13:53
【问题描述】:

我在非阻塞模式下使用套接字,客户端连续向服务器发送数据,虽然我为套接字设置的缓冲区足够大以保存来自客户端的所有数据但 Ewouldblock 总是抛出,我不知道为什么,你能解释一下我详细介绍了这个 Ewouldblock。

【问题讨论】:

  • Ewouldblock thew from send() function
  • 请编辑您的问题以包含您的一些实际代码

标签: python sockets


【解决方案1】:

EWOULDBLOCK 表示发送时套接字发送缓冲区已满,或者接收时套接字接收缓冲区为空。您应该使用select() 来检测这些条件何时变为错误。

【讨论】:

  • 但是我设置的缓冲区大小足以保存我要发送的所有数据,为什么仍然会从 send() 函数中抛出 ewillblock?除了缓冲区已满。
  • @nguyenngoc101 如果您的写入速度快于阅读器的读取速度,则发送缓冲区可能会填满。您需要将您和对等方之间的网络视为固定大小的管道,而不是无限膨胀的气球。数据必须到某个地方。
  • 客户端只发送一个数据包,在本地主机测试。我设置的缓冲区大小大于数据包的容量。数据包分成几部分并连续发送这个部分
  • 我指的是由 SO_SNDBUF 和 SO_RCVBUF 控制的套接字缓冲区。
  • 我明白你的意思,但你能告诉我 Ewouldblock 何时从 send() 函数中抛出,除了缓冲区已满。非常感谢。
猜你喜欢
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多