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, указывающее на то, что операция более не разрешена.
Исключения
Произошла ошибка при попытке доступа к сокету.
Socket был закрыт.
Примеры
В следующем примере кода используется 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на подключение всегда вызывайте Shutdown метод перед закрытием Socket. Это гарантирует, что все данные будут отправлены и получены в подключенном сокете перед закрытием.
Вызовите метод , Close чтобы освободить все управляемые и неуправляемые Socketресурсы, связанные с . Не пытайтесь повторно использовать Socket после закрытия .
В следующей SocketShutdown таблице показаны значения перечисления, допустимые how
для параметра .
Значение | Описание |
---|---|
Отправить | Отключите отправку для этого Socketобъекта . |
Receive | Отключите получение в этом .Socket |
Оба | Отключите отправку и получение в этом Socket. |
Если задано значение how
, Send последующие вызовы не Send разрешены. Если вы используете без Socketподключения , указание Send не будет действовать.
Если задано значение how
, Receive последующие вызовы не Receive разрешены. Это не влияет на более низкие уровни протокола. Если вы используете протокол, ориентированный на подключение, подключение прерывается, если после вызова Shutdown метода существует одно из следующих условий:
Данные помещаются во входящий сетевой буфер, ожидая получения.
Поступило больше данных.
Если вы используете протокол без подключения, датаграммы принимаются и помещаются в очередь. Однако если буферное пространство для дополнительных входящих датаграмм отсутствует, они будут удалены, и отправителю не будет возвращено никаких ошибок. Не рекомендуется использовать Shutdown в режиме без Socket подключения.
При установке how
значения отключается Both как отправка, так и получение, как описано выше.
Примечание
Если вы получаете SocketException при вызове Shutdown метода , используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Примечание
Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.