Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET TCP客户端连接状态 背景_.net_Sockets_Networking_Tcp_Tcpclient - Fatal编程技术网

.NET TCP客户端连接状态 背景

.NET TCP客户端连接状态 背景,.net,sockets,networking,tcp,tcpclient,.net,Sockets,Networking,Tcp,Tcpclient,我正在通过TCP连接与服务器通信(当然,我不能接触)。我连接到的应用程序需要两个连接。一个是“我想连接”,握手类型的东西,另一个是另一个端口,用于实际连接。在我的头撞了几天之后,我发现要接受第二个连接,第一个断开连接(FIN)必须由服务器启动(它会立即启动)。如果客户端启动断开连接,则第二个连接将被拒绝 问题: 我读过很多关于这方面的帖子,我知道TCP连接,以及你如何无法真正知道连接是否处于活动状态等等(请不要用断开的连接、断线、意外关闭等来回应)。但是,是否有任何方法可以检测到远程服务器已正确

我正在通过TCP连接与服务器通信(当然,我不能接触)。我连接到的应用程序需要两个连接。一个是“我想连接”,握手类型的东西,另一个是另一个端口,用于实际连接。在我的头撞了几天之后,我发现要接受第二个连接,第一个断开连接(FIN)必须由服务器启动(它会立即启动)。如果客户端启动断开连接,则第二个连接将被拒绝

问题: 我读过很多关于这方面的帖子,我知道TCP连接,以及你如何无法真正知道连接是否处于活动状态等等(请不要用断开的连接、断线、意外关闭等来回应)。但是,是否有任何方法可以检测到远程服务器已正确断开连接,而无需尝试向其写入数据

再说一遍,我不是在说断开的连接、断开的线路等等。我想知道服务器何时发送我已确认的FIN段。听起来很简单,对吗?

如果我正确理解了-文档的话。当您从NetworkStream(同步或异步)执行读取时,它返回0字节,这意味着远程方已关闭连接。也就是说,FIN已确认。

是,NetworkStream.Read()将阻塞,直到远程客户端断开连接。正是我想要的。谢谢