gpt4 book ai didi

c - 如何知道tcp session 结束?

转载 作者:行者123 更新时间:2023-11-30 20:17:37 25 4
gpt4 key购买 nike

大家好,我想知道我的tcp连接什么时候能完成。我的意思是下一个:我的 prog 是一个客户端,它向服务器发送任何消息,但它不知道服务器何时关闭连接(发送 FIN 标志)。它看起来像握手,prog 发送第一个消息,然后在同一个套接字上接收并发送下一个消息,然后 serv 发送 FIN - 标志,这意味着 tcp session 结束或握手结束,如您所愿。我的目标是知道服务器何时说 FIN,我正在使用流套接字。

我尝试使用 msdn doc int recv(SOCKET s ... int flags); 中的 var flags。但现在我认为这不是我想要的......

int partresult = recv(*my_sock, RcvBytes, Size, 0);

最佳答案

(我假设您指的是 TCP,因为 FIN 仅在该上下文中使用)。

调用recv()会告诉你你在寻找什么:它将返回 0当收到 FIN 时(即远程套接字输出为 shutdown )(@RemyLebeau 已说明,如果出现错误则为 -1 )。

我以此答案为契机,警告您不要将其返回值与预期读取的字节数进行比较,因为 TCP 不保证单个 send()可以用单个 read() 来读取。所以不要测试if (partresult < RcvBytes) ... .

关于c - 如何知道tcp session 结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56761454/

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