C# 插座。断开vs插座。关闭

C# 插座。断开vs插座。关闭,c#,sockets,C#,Sockets,有什么区别?我在使用袜子时必须遵守哪些规则? 我正在编写一个简单的守护进程,它必须侦听端口并执行一些操作。Socket.Close调用Dispose(但它没有文档记录) 当使用面向连接的套接字时,请始终在关闭套接字之前调用Shutdown方法。这样可以确保在关闭连接的套接字之前,所有数据都在该套接字上发送和接收。() 您的代码应该如下所示(至少我会这样做): Disconnect方法采用单个参数bool reuseSocket,具体如下: 再利用小盒 类型:System.Boolean 如果当前

有什么区别?我在使用袜子时必须遵守哪些规则?
我正在编写一个简单的守护进程,它必须侦听端口并执行一些操作。

Socket.Close
调用
Dispose
(但它没有文档记录)

当使用面向连接的套接字时,请始终在关闭套接字之前调用Shutdown方法。这样可以确保在关闭连接的套接字之前,所有数据都在该套接字上发送和接收。()

您的代码应该如下所示(至少我会这样做):

Disconnect
方法采用单个参数
bool reuseSocket
,具体如下:

再利用小盒 类型:System.Boolean 如果当前连接关闭后可以重新使用此套接字,则为true;否则,错误

这基本上意味着,当您将
reuseSocket
设置为
false
时,它将在您关闭它后被处理


Shutdown
方法不会断开您的套接字,它只会禁用发送/接收数据。

您是否检查了MSDN页面中的这两种方法?Pro答案会更好。也许我遗漏了什么?另请参见关于清理插座的正确方法:
using (var socket = new Socket())
{
    socket.Shutdown(SocketShutdown.Both);
    socket.Close();
}