【问题标题】:listen call backlog in c在c中收听呼叫积压
【发布时间】:2014-02-27 23:03:24
【问题描述】:

我在c中浏览了很多网络资料,也在互联网上搜索了很多,但仍然怀疑listen()中积压的目的是什么。

注意:- 我在 stackoverflow 中也经历了相同的问题/答案,但仍然很困惑。

谁能用简单的语言解释一下?

如果listen中的积压队列是待处理或不完整请求的数量,而不是我在积压参数中提供5个,仍然可以连接超过5个连接。

谢谢。

【问题讨论】:

    标签: c linux tcp


    【解决方案1】:

    当您在端口上listen 时,在幕后 TCP 将完成您的连接(即 3 次握手)并将它们放入队列中,直到积压队列的大小。当您accept 连接时,您的 pgm 开始处理它,并且该插槽在队列中打开以用于另一个(潜在)连接。因此,如果您当前正在处理(已接受)5 个连接,并且您的 backlog 大小为 5,那么 tcp 层仍然可以建立另外 5 个连接。

    【讨论】:

    • 因此,如果我在接受呼叫之上给出 wait(60) ,而不是在那 60 秒内持续请求 6 个连接。听会报错吗??
    • 对不起。你失去了我。我不确定你在问什么。连接何时到达取决于客户端何时连接。当您致电accept 时,您将(1)返回一个新的套接字连接(如果队列中有可用的连接); (2) 如果没有可用的连接,则阻塞(如果侦听套接字是非阻塞的,则立即返回 EAGAIN)。如果您接受连接的速度很慢并且您的队列已满,那么 tcp 将开始拒绝任何新的连接请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多