2014-10-17 99 views
0

多个进程可能在同一个套接字上侦听?在同一套接字上侦听多个进程

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

+0

我认为[这个答案] [1]应该涵盖你的大部分问题。 [1]:http://stackoverflow.com/a/670897/2346527 – 2014-10-17 12:48:38

回答

1

是的,它是非常可能的多个进程使用fork()侦听相同的端口。

事实上,当需要接收来自大量客户端的消息时,大多数Web服务器都使用它来提高性能。

只需创建监听程序&即可分叉进程。现在所有进程都将在同一个端口上进行侦听。现在,他们如何将传入的请求彼此分开完全取决于操作系统,就像在Solaris中一样,请求按循环方式在进程间分配。

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

+0

要知道一个事实,即'接受()'可能会失败! – 2014-10-19 17:42:31

+0

何时以及如何接受可以失败的朋友.....我已经使用了他们多次。接受我从未失败。 Yup select可以超时但这不是问题。 – Khanjarrr 2014-10-19 18:39:19

+1

从技术上讲,read-ready通知会同时到达两个进程,但只有一个套接字会被accept()编辑,让另一个套接字得到一个错误代码“EAGAIN”。 该评论更上面作为OP的说明:) – 2014-10-19 19:32:45

相关问题