可以在客户端通过一个UNIX域套接字(AF_UNIX型)推送数据用信号发送忙,如果接收端无法与负载应付?
要么
必须在套接字顶部有一个Client-Server协议来处理流量控制吗?
您绝对可以阻止发送到UNIX域套接字.如果接收方的接收缓冲区已满,或者未完成(未传送)的发送套接字缓冲区数太高,则发送方将阻塞.
SOCK_STREAM UNIX域套接字的工作方式类似于TCP套接字.SOCK_DGRAM UNIX域套接字的工作方式与UDP类似,不同之处在于UNIX域数据报具有有保证的有序传递,而UDP套接字可以重新排序或删除.(此外,UNIX域套接字可用于发送文件描述符并在进程之间传递用户凭据,这些都不能通过TCP,UDP或管道完成.)
因此,由于所有类型的UNIX域套接字都保证了按顺序传送,接收器可以在忙于执行其他操作时停止接收,并且当没有可用的缓冲区空间时将自动阻止发送方(或将通知没有更多的缓冲区空间,如果它们请求对其套接字进行非阻塞操作).然后,当接收者再次开始接收时,发送者将被允许发送更多.