> Под nix существует closesocket() ? > Почему то такой ф-ии не нашел. Нет ни в man, ни в > библиотеках. > Если её нет, то как закрыть сокет ? Пробовал shutdown и > close - не вышло. Следующий bind говорит, что сокет уже > прибайнден.
насколько я знаю для закрытия сокета достаточно вызвать
close(socket)
проблема с bind к закрытию сокета имеет косвенное отношение:
по rfc закрытие tcp соединения происходит в несколько фаз, продолжительность этих фаз зависит от топологии сетки, посему после закрытия сокета tcp порт некоторое время считается занятым. для решения этой проблемы я пользовал
int state = 1;
::setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, (const char*)&state, sizeof(int));
Под nix существует closesocket() ?
Почему то такой ф-ии не нашел. Нет ни в man, ни в библиотеках.
Если её нет, то как закрыть сокет ? Пробовал shutdown и close - не вышло. Следующий bind говорит, что сокет уже прибайнден.
closesocket under Redhat11.06.02 14:45 Автор: cb <cb> Статус: Member
> Под nix существует closesocket() ? > Почему то такой ф-ии не нашел. Нет ни в man, ни в > библиотеках. > Если её нет, то как закрыть сокет ? Пробовал shutdown и > close - не вышло. Следующий bind говорит, что сокет уже > прибайнден.
насколько я знаю для закрытия сокета достаточно вызвать
close(socket)
проблема с bind к закрытию сокета имеет косвенное отношение:
по rfc закрытие tcp соединения происходит в несколько фаз, продолжительность этих фаз зависит от топологии сетки, посему после закрытия сокета tcp порт некоторое время считается занятым. для решения этой проблемы я пользовал
int state = 1;
::setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, (const char*)&state, sizeof(int));
cb.
closesocket under Redhat11.06.02 13:19 Автор: YURICH Статус: Незарегистрированный пользователь
> Под nix существует closesocket() ? > Почему то такой ф-ии не нашел. Нет ни в man, ни в > библиотеках. > Если её нет, то как закрыть сокет ? Пробовал shutdown и > close - не вышло. Следующий bind говорит, что сокет уже > прибайнден. fclose?