C#如果不再使用TCPClient.Close,我们是否需要关闭TCPClient?

use*_*912 3 c# tcp tcpclient

我正在制作一个程序,将数据发送给许多TCP侦听器.如果不再使用其中一个TCP发送通道,我们是否需要使用TCPClient.close将其关闭.如果我们把它打开怎么办?

谢谢!

Jon*_*eet 11

我不会Close明确使用- 我只是通过using声明处理它:

using (TcpClient client = ...)
{
    // Use the client
}
Run Code Online (Sandbox Code Playgroud)

如果我们把它打开怎么办?

如果任何一方都没有关闭连接,它将毫无意义地坐在那里无所事事.

如果另一端关闭连接,我怀疑你在TIME_WAIT或类似的东西中有一段时间的本地连接; 我不知道确切的细节,但它并不理想.

重点是它可能会占用一些系统资源,从根本上说它并不理想.是否会导致程序崩溃,系统变得疯狂?可能不是 - 至少除非你创造了大量的这些.但是,处理具有非内存资源的任何东西仍然是个好主意.

  • @ user1034912:`Close()`不是"坏" - 它不像通过`using`语句使用`Dispose`那么方便.你应该在任何时候使用一个"使用"语句时使用`using`语句,然后在本地范围内完成. (2认同)