gpt4 book ai didi

language-agnostic - connect() 与 TCP 的行为

转载 作者:可可西里 更新时间:2023-11-01 02:47:51 26 4
gpt4 key购买 nike

我在客户端调用 connect()。客户端进入 SYN_SENT 状态并发送 SYN。现在它得到一个没有 ACK 的 SYN,所以客户端进入 SYN_RCVD 状态。

此时 connect() 是否返回?从技术上讲,您有足够的信息可以在套接字上调用 send() 和 recv() 。 RFC 本身说,如果您在 SYN_RCVD 状态的套接字上调用 SEND,则:

SYN-RECEIVED STATE

Queue the data for transmission after entering ESTABLISHED state.

并且,如果您调用 RECEIVE:

LISTEN STATE
SYN-SENT STATE
SYN-RECEIVED STATE

Queue for processing after entering ESTABLISHED state. If there
is no room to queue this request, respond with "error:
insufficient resources".

所以我的问题是:connect() 是在获取 SYN 后返回,然后对 recv() 的调用会阻塞,还是 connect() 本身会阻塞直到连接完全建立?

最佳答案

作为引用,connect() 的实现在 TCP/IP Illustrated, Volume 2 by Wright and Stevens 中将阻塞直到连接完全建立(如果 connect() 调用设置为阻塞)。

关于language-agnostic - connect() 与 TCP 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/720185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com