Предыдущая | Оглавление | Следующая |
Прекратить дальнейшие прием или передачу через сокет
#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); |
Предыдущая | Оглавление | Следующая |