我现在正在处理与运行在ESP32上的tcp服务器的tcp套接字连接。 通信方面没有问题,但是我无法关闭这个连接。 在搜索了解如何关闭/重置tcp客户端的解决方案后,似乎正确的关闭tcp客户端的方法应该是:
tcpClient.GetStream().Close();
tcpCLient.Close();
这篇在 MSDN 上的示例 也使用了这种方法。
但不幸的是,它并不能真正关闭连接。在 MCU 中检查时,发现连接并未关闭。即使稍后我关闭应用程序,它也不会关闭。在这种情况下,MCU 的 TCP 连接无法释放,也无法接受其他连接。因此,我认为这不是一个正确的关闭 tcpClient 的解决方案。
如果我没有执行上述语句,直接关闭应用程序,则可以成功关闭连接。MCU 的 TCP 连接也将被释放。
似乎在关闭应用程序时进行了一些操作,可以真正地关闭连接。
在某些情况下,我需要在某些操作后关闭连接,并重新连接。因此,我不能依赖于应用程序的关闭。
我尝试了以下所有方法的不同组合,但它们都不能成功释放 tcpClient 连接:
tcpClient.Close();
tcpClient.Client.Close();
tcpClient.GetStream().Close();
tcpClient.Client.Disconnect(true);
tcpClient.Client.Disconnect(false);
tcpClient.Dispose();
tcpClient.Client.Dispose();
tcpCLient = null;
也许应该按照正确的顺序使用上述一些命令来完成。
有没有人知道我如何自己关闭连接。
提前致谢。