Закрыть дескриптор сокета
- Прототип
-
#include <unistd.h>
int close(int s);
- Описание
-
После использования сокета в своих зловредных целях, когда обмен данными закончен, и вообще, сокет ни для чего не нужен, его нужно закрыть, освободив тем самым системные ресурсу.
Удаленный компьютер может пойнять, что это произошло, двумя способами. Раз: он вызовет recv(), и она вернет 0. Два: он вызовет send(), получит сигнал SIGPIPE и send() вернет -1, а errno будет равно EPIPE.
Windows: функция называется closesocket(), а не close(). Если ты попытаешься вызвать close() для дескриптора сокета, возможно, Windows разозлится... а ты не хочешь ее злить!
- Возвращаемое значение
-
Возвращает ноль при успехе, -1 при ошибке, сохраняя ее номер в errno.
- Пример
-
s = socket(PF_INET, SOCK_DGRAM, 0);
.
.
.
// целая куча всяких разных действий с сокетом...
.
.
.
close(s); // вот, собственно, и все
|
- См. также
-
socket(),
shutdown()
|