Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
C# 仅仅关闭套接字就足够了,还是我也应该关闭流?_C#_Sockets_Tcp - Fatal编程技术网

C# 仅仅关闭套接字就足够了,还是我也应该关闭流?

C# 仅仅关闭套接字就足够了,还是我也应该关闭流?,c#,sockets,tcp,C#,Sockets,Tcp,当我通过TCP套接字与服务器建立连接时,我使用以下代码进行通信: Socket socket = ... NetworkStream ns = new NetworkStream(socket); StreamReader sr = new StreamReader(ns); StreamWriter sw = new StreamWriter(ns); 现在。。。只做socket.Close()就够了吗还是执行以下操作更好: sw.Close(); sr.Close(); ns.Clos

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

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()

尝试了什么

:

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

因此:


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

从未想过这一点。谢谢你,主持人,
using (NetworkStream ns = new NetworkStream(socket))
{
     // Your code
}