作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果接收端无法应对负载,通过 UNIX 域套接字(AF_UNIX 类型)推送数据的客户端是否可以收到忙信号?
或者
套接字之上必须有一个客户端-服务器协议(protocol)来处理流量控制吗?
最佳答案
您绝对可以对 UNIX 域套接字进行阻塞发送。如果接收方的接收缓冲区已满,或者未完成(未传送)的发送套接字缓冲区的数量过高,则发送方将阻塞。
SOCK_STREAM UNIX 域套接字的工作方式类似于 TCP 套接字。 SOCK_DGRAM UNIX 域套接字的工作方式与 UDP 类似,不同之处在于 UNIX 域数据报保证按顺序传送,而 UDP 套接字可以重新排序或删除。 (此外,UNIX 域套接字可用于在进程之间发送文件描述符和传递用户凭据,而这两者都无法通过 TCP、UDP 或管道来完成。)
因此,由于所有类型的 UNIX 域套接字都保证按顺序传递,因此接收方在忙于做其他事情时可以停止接收,而当没有更多可用缓冲区空间时(或如果他们在套接字上请求非阻塞操作,则会收到没有更多缓冲区空间的通知)。然后,当接收方再次开始接收时,发送方将被允许发送更多内容。
关于sockets - UNIX 域套接字 : is there such a thing as a "busy" signal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478975/
我是一名优秀的程序员,十分优秀!