gpt4 book ai didi

C# - 要关闭 NetworkStream,请调用 stream.Close 或 socket.Shutdown?

转载 作者:太空狗 更新时间:2023-10-29 17:56:39 25 4
gpt4 key购买 nike

我想知道是否有人知道处理使用 Socket 对象和 NetworkStream 对象的类的最佳方法?所讨论的类有一个 NetworkStream 实例和一个用于创建 NetworkStream 的 Socket 实例。

this.socket = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp)
{
ReceiveBufferSize = 65536,
SendBufferSize = 150
};

this.socket.Connect(
new IPEndPoint(
IPAddress.Parse(
Properties.Settings.Default.MpsServer2),
Properties.Settings.Default.MpsPort2));

this.stream = new NetworkStream(
this.socket, true);

在我的 Dispose 方法中,我应该这样做吗?

this.stream.Close();
this.socket.Shutdown(SocketShutdown.Both);
this.socket.Close();

所有这些都是必要的还是矫枉过正?

最佳答案

Socket 不会处理关联的 NetworkStream。我开火了reflector太确定了。 (一种分析 .NET dll 和 .NET 库的工具。很棒的工具。您必须在月底下载免费版本,然后才能完全使用。商业版)。

然而,根据the MDSN documentation和反射流将关闭套接字,但前提是它拥有套接字的所有权。您可以将其设置为重载构造函数中的第二个参数。

在任何情况下你都必须调用Shutdown 因为如果flushes the data .否则,您可能会丢失数据。

关于C# - 要关闭 NetworkStream,请调用 stream.Close 或 socket.Shutdown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5047316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com