Это архив сайта coldflame.by.ru, он не обновлялся с 2007 года. Мой современный сайт тут: http://leonid.shevtsov.me.
Домой! Обо мне Специально для РИ-06-1 Разнообразное... барахло, короче :) Программы и прочее Статьи и переводы Блог SmartDaemon
Предыдущая ОглавлениеСледующая

shutdown()

Прекратить дальнейшие прием или передачу через сокет

Прототип

#include <sys/socket.h>

int shutdown(int s, int how);

Описание

Допустим, ты не хочешь, чтобы сокет отправлял данные, но зато хочешь принимать. Или наоборот. Как это сделать?

Вызов close() закрывает сокет и для приема, и для передачи, и также освобождает связанные с ним ресурсы. Если же ты хочешь закрыть только одно направление передачи, используй shutdown().

Параметр s передает данный сокет, а действие передается параметром how, который может быть равен SHUT_RD, чтобы остановить прием, SHUT_WR чтобы остановить передачу, или SHUT_RDWR, чтобы сделать и то, и другое.

Учти, что shutdown() не освобождает ресурсы, и тебе все равно нужно будет вызвать close(), даже если закрыты оба направления передачи.

Эта функция используется редко.

Возвращаемое значение

Возвращает ноль при успехе, -1 при ошибке, сохраняя ее номер в errno.

Пример

int s = socket(PF_INET, SOCK_STREAM, 0);

// ...send() и все остальное ...

// запретить дальнейшие sends()ы:
shutdown(s, SHUT_RD);

См. также

close()


Предыдущая ОглавлениеСледующая