【问题标题】:Server supporting multiple clients with listen maybe?服务器支持多个客户端听也许?
【发布时间】:2011-10-12 02:18:53
【问题描述】:

我正在编写一个简单的服务器,只是为了好玩,我意识到第三步意味着调用listen(...) 函数需要两个参数。第二个是backlog。虽然我不完全理解这个论点的含义,但我认为它会让客户排队。因此,假设我是对的,我想知道服务器如何在队列中向上移动,或者我实际上是否必须实现它?

我确实在网上找到了很多关于它的示例,但它们大多包含代码。我想要一个更理论的解释。 谢谢!

【问题讨论】:

  • 有关更多理论解释,您可以阅读 stevens 的 Unix 网络编程中的第 4.5 节……这是对积压工作的一个很好的解释。阅读这里link

标签: c++ c sockets client


【解决方案1】:

是的,你是对的 - 积压是可能的连接队列(AFAIK 它在 Linux 上被忽略)

在你创建一个监听套接字之后,你在它上面调用accept(),并假设你的套接字是阻塞的——accept调用在它把第一个客户端请求从队列中拉出之前不会返回。

所以你可以做类似的事情

listen();
while(int in_socket=accept())
{
    if(in_socket>0)
    // process each client in order they are received
}  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 2020-07-16
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多