Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 在同一套接字上侦听的多个进程_Sockets_Unix - Fatal编程技术网

Sockets 在同一套接字上侦听的多个进程

Sockets 在同一套接字上侦听的多个进程,sockets,unix,Sockets,Unix,多个进程是否可以侦听同一个套接字 例如,我有5个客户端,一个进程作为服务器在套接字上写入数据,所有5个客户端都接收相同的数据集。是的,使用fork()在同一端口上侦听多个进程是非常可能的 事实上,当需要从大量客户机接收消息时,大多数web服务器都会使用它来提高性能 只需创建监听器&分叉进程。现在,所有进程都将在同一端口上侦听。现在,它们如何在它们之间划分传入请求完全取决于操作系统,就像在Solaris中一样,请求是在循环的基础上在进程之间划分的 但是对于您的场景,您可以使用套接字多路复用(sel

多个进程是否可以侦听同一个套接字


例如,我有5个客户端,一个进程作为服务器在套接字上写入数据,所有5个客户端都接收相同的数据集。

是的,使用fork()在同一端口上侦听多个进程是非常可能的

事实上,当需要从大量客户机接收消息时,大多数web服务器都会使用它来提高性能

只需创建监听器&分叉进程。现在,所有进程都将在同一端口上侦听。现在,它们如何在它们之间划分传入请求完全取决于操作系统,就像在Solaris中一样,请求是在循环的基础上在进程之间划分的


但是对于您的场景,您可以使用套接字多路复用(select())来获得所需的结果

我认为[这个答案][1]应该涵盖你的大部分问题。[1] :请注意,
accept()
可能会失败!何时和如何接受可能失败的好友。。。。。这两个词我都用过好几次了。对我来说,接受永远不会失败。是的,select可以超时,但这不是一个问题。从技术上讲,ready通知可能会同时到达两个进程,但只有一个套接字会被
accept()
ed,让另一个套接字获得
EAGAIN
的错误代码。上面的评论更倾向于作为OP的注释:)