每个人,我想知道我的tcp连接何时完成。 我的意思是下一个:我的编是一个客户端,它将任何消息发送到服务器,但是它不知道服务器何时关闭连接(发送FIN标志)。 它看起来像握手,程序先发送msg,然后在同一套接字上接收并发送下一个msg,然后服务发送FIN-标志,即您希望tcp会话结束或握手结束。 我的目标是知道服务器何时使用流套接字说FIN。
我尝试使用msdn doc int recv(SOCKET s ... int flags);
中的var标志。但是现在我认为我不是在寻找...
int partresult = recv(*my_sock, RcvBytes, Size, 0);
答案 0 :(得分:1)
(我假设您指的是TCP,因为FIN仅在该上下文中使用)。
对recv()
的调用将告诉您您要寻找的内容:当收到FIN(即远程套接字输出为0
)时,它将返回shutdown
(已声明) @RemyLebeau,如果发生错误,请-1
)。
我将这个答案用作警告您有关 not 的机会,因为TCP无法保证单个send()
可以用一个read()
读取。因此,不测试if (partresult < RcvBytes) ...
。