我有几个关于结束tcp连接的问题。
客户端使用Tcp连接到我的服务器,使用
listener.BeginAcceptTcpClient(ConnectionEstabilishedCallback, null);
接受客户端后,我使用networkStream.BeginRead(....)
开始读取。
当我等待消息时,如果客户端断开连接会发生什么?(例如,它失去电源、网络等)
我如何知道发生了什么?如果成功读取后,我做一些事情,然后调用
networkStream.Close(); client.Close();
客户端会看到什么?如何“优雅地”终止连接?如果我正在等待读取(使用BeginRead),然后在另一个线程上关闭相同的流,会发生什么?
编辑以添加:我确实有一个ping-pong消息在客户端和服务器之间进行。这足够吗?如果我没有收到ping,就终止我的NetworkStream?肯定有更好的方法。
NetworkStream
是这些套接字的抽象)。 - C.Evenhuis