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.
Применяется к
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по