2

当我通过 TCP Socket 与我的服务器建立连接时,我使用以下代码进行通信:

Socket socket = ...

NetworkStream ns = new NetworkStream(socket);

StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);

现在......只是做就足够了socket.Close();还是做得更好:

sw.Close();
sr.Close();
ns.Close();
socket.Close();

有谁知道清理/关闭/释放套接字的最合适方法是什么?

而且,我应该Dispose()对上面定义的每个变量做一个吗?

4

2 回答 2

2

试过什么?

NetworkStream.Close()参考

关闭当前流并释放与当前流关联的所有资源(例如套接字和文件句柄)。不要调用此方法,而是确保正确处理流。

所以:

using (NetworkStream ns = new NetworkStream(socket))
{
     // Your code
} 
于 2013-07-16T12:59:16.983 回答
0

您应该关闭输出流。这将刷新它,并关闭另一个流和套接字。不要自己关闭它们,或者如果必须,在输出流之后关闭它们。否则您可能会丢失数据。

于 2013-07-16T22:33:58.107 回答