LINUX.ORG.RU

socket bind close


0

0
Создаю сокет, биндю, закрываю, перезапускаю программу и получаю:
bind(): Address already in use

Неужели недостаточно просто закрывать сокет ? Сокет ТОЧНО закрывается, именно его дескриптор, все работает как часы !
anonymous
Ответ на: комментарий от anonymous
Вообщем спасибо, кому надо пользуйтесь таким кодом перед bind():

sock_listen = socket (AF_INET, SOCK_STREAM, 0);
if (sock_listen == -1)
{
printf ("ERROR[socket()]: %s\n", strerror(errno));
return;
}

int sock_opt = 1;
if (setsockopt(sock_listen, SOL_SOCKET, SO_REUSEADDR, &sock_opt, sizeof(sock_opt)) == -1)
{
printf ("ERROR[setsockopt()]: %s\n", strerror(errno));
return;
}
anonymous
()
Ответ на: комментарий от anonymous
> А из-за чего возникает необходимость в этом ?

ну там же _все_ написано?
idle ★★★★★
()
Ответ на: комментарий от anonymous
Сразу после закрытия соединение переходит в состояние TAIM_WAIT поэтому и необходимо ставить этот флаг это нормально. Чтобы без этого флага прибиндить порт он должен находиться в состоянии CLOSED
anonymous
()
Ответ на: комментарий от anonymous
А может надо сделать чтобы при вопросе со словом socket автоматически постился ответ со ссылкой на UNIX socket FAQ?
asso_w
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.