Socket.Shutdown(SocketShutdown) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
禁用某 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 值之一,它指定不再允许执行的操作。
例外
尝试访问套接字时出错。
示例
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 。
下表显示了 SocketShutdown 对 how
参数有效的枚举值。
“值” | 描述 |
---|---|
发送 | 在此 Socket上禁用发送。 |
接收 | 在此 Socket上禁用接收。 |
两者 | 在此 Socket上禁用发送和接收。 |
将 设置为 how
Send 指定不允许对 的后续调用 Send 。 如果使用无 Socket连接 ,则 Send 指定将不起作用。
将 设置为 how
Receive 指定不允许对 的后续调用 Receive 。 这对较低的协议层没有影响。 如果使用面向连接的协议,则在调用 Shutdown 后存在以下任一条件时,连接将终止:
数据位于等待接收的传入网络缓冲区中。
更多数据已到达。
如果使用无连接协议,则接受数据报并排队。 但是,如果没有缓冲区空间可用于其他传入数据报,它们将被丢弃,并且不会向发送方返回错误。 Shutdown不建议在无Socket连接上使用。
将 设置为 how
Both 将禁用如上所述的发送和接收。
注意
如果在调用 Shutdown 方法时收到 SocketException ,请使用 SocketException.ErrorCode 属性获取特定的错误代码。 获取此代码后,请参阅 Windows 套接字版本 2 API 错误代码 文档,了解错误的详细说明。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。