0

我正在编写一个单线程选择服务器,用户可以在其中动态添加监听套接字。问题是如果有人想添加一个监听套接字,服务器不会在那个新的套接字上进行选择,直到其他套接字之一发生某些事情。

我想到的一种解决方法是在列表中添加一个假套接字,每当添加新的侦听套接字时我可以发出信号,以强制服务器将新的侦听套接字添加到列表中。这个解决方案对我来说似乎有点“hacky”,我想知道其他人是否有任何想法。

4

3 回答 3

0

是的,但是为了添加另一个监听套接字,我想你必须先连接到服务器,然后告诉它添加另一个套接字。

此外,您可能希望在套接字调用中设置超时值。这样,如果服务器不忙于响应请求,它可以在超时时执行一些低优先级的活动,例如删除陈旧的文件等。

于 2013-07-08T16:18:27.110 回答
0

您可以使用self-pipe 技巧亚历克斯 B已经发布了一个很好的答案,你真的应该阅读它。

于 2013-07-08T18:54:17.440 回答
0

你对假插座的想法还不错。我会将它重命名为控制套接字,因为您可以使用它向服务器发送不同类型的命令或请求。而且它会比超时的轮询更实时select

控制插座的类型也可以不同于其他插座。例如,使用 UDP 或 unix 域套接字将控制消息发送到本地服务器程序比使用 TCP 套接字更容易。

于 2013-07-08T18:41:23.007 回答