可以在客户端通过UNIX域套接字(AF_UNIX型)推送数据用信号的如果接收端无法与负载应付?

OR

必须要有在插座来处理流控制的顶部上的客户端 - 服务器协议?

有帮助吗?

解决方案

除非你有这样的协议,也没有办法让服务器告诉客户端暂停发送的信息。

其他提示

您绝对可以做一个阻塞发送到UNIX域套接字。如果接收侧的接收缓冲器是满的,或者如果优秀(未递送的)发送套接字缓冲器的数量过高时,发送者将被阻塞。

SOCK_STREAM UNIX域套接字工作像TCP套接字。 SOCK_DGRAM UNIX域套接字的工作(如UDP),除了Unix域数据报有保障,按顺序传送,而UDP套接字可以重新排序或删除。 (另外,UNIX域套接字可被用于发送文件描述符和传递进程之间的用户凭证,两者都不可以与TCP,UDP,或管道来完成。)

所以,因为有序传送由所有类型的UNIX域套接字的保证时,接收器可以只停止接收时,它正忙于做其他事情,并且发件人会时有可用没有更多的缓冲区空间被自动阻止(或将被告知,有没有更多的缓冲空间,如果他们要求他们的插座非阻塞操作)。然后,当接收机开始再次接收,发送者将被允许发送更多。

除了具有当它是“忙”和发送特定信号背面的一些知识(例如HTTP的503服务不可用)服务器。您还可以设置客户端连接的一定时间后超时,如果你得到一个超时事件,解释,由于服务器忙。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top