Socket.Shutdown(SocketShutdown) 方法

定义

禁用某 Socket 上的发送和接收。

public:
 void Shutdown(System::Net::Sockets::SocketShutdown how);
public void Shutdown (System.Net.Sockets.SocketShutdown how);
member this.Shutdown : System.Net.Sockets.SocketShutdown -> unit
Public Sub Shutdown (how As SocketShutdown)

参数

how
SocketShutdown

SocketShutdown 值之一,它指定不再允许执行的操作。

例外

尝试访问套接字时出错。

示例

下面的代码示例使用 Shutdown 禁用 Socket

try
{
   aSocket->Shutdown(SocketShutdown::Both);
   aSocket->Close();
}
catch (...)
{
   aSocket->Close();
   throw;
}

if ( aSocket->Connected )
{
   Console::WriteLine( "Winsock error: {0}", Convert::ToString(
      System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) );
}
try
{
    aSocket.Shutdown(SocketShutdown.Both);
}
finally
{
    aSocket.Close();
}
    Try
        aSocket.Shutdown(SocketShutdown.Both)
    Finally
        aSocket.Close()
    End Try

End Sub

注解

使用面向Socket连接的 时,始终在关闭 Socket之前调用 Shutdown 方法。 这可确保在已连接的套接字上发送和接收所有数据,然后再将其关闭。

Close调用 方法以释放与 Socket关联的所有托管和非托管资源。 不要在关闭后尝试重用 Socket

下表显示了 SocketShutdownhow 参数有效的枚举值。

“值” 描述
发送 在此 Socket上禁用发送。
接收 在此 Socket上禁用接收。
两者 在此 Socket上禁用发送和接收。

将 设置为 howSend 指定不允许对 的后续调用 Send 。 如果使用无 Socket连接 ,则 Send 指定将不起作用。

将 设置为 howReceive 指定不允许对 的后续调用 Receive 。 这对较低的协议层没有影响。 如果使用面向连接的协议,则在调用 Shutdown 后存在以下任一条件时,连接将终止:

  • 数据位于等待接收的传入网络缓冲区中。

  • 更多数据已到达。

如果使用无连接协议,则接受数据报并排队。 但是,如果没有缓冲区空间可用于其他传入数据报,它们将被丢弃,并且不会向发送方返回错误。 Shutdown不建议在无Socket连接上使用。

将 设置为 howBoth 将禁用如上所述的发送和接收。

注意

如果在调用 Shutdown 方法时收到 SocketException ,请使用 SocketException.ErrorCode 属性获取特定的错误代码。 获取此代码后,请参阅 Windows 套接字版本 2 API 错误代码 文档,了解错误的详细说明。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

适用于

另请参阅