>>>OS FreeBSD. Проблема следующая. Если забиндить порт (функция bind),
>>>а потом некорректно завершить приложение, то при последующих
>>>попытках открыть этот порт происходит ошибка, мол, порт уже занят.
>>>
>>>Как с этим боротться?
>>>
>>>Заранее спасибо.
>>
>>Лечится это дело вот такой операцией перед bind'ом :
>> int ss_n=1;
>> setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&ss_n, sizeof(ss_n));
>А нельзя ли пояснить код?
>А то у меня такая же проблема на Perl.
это
man 7 socket
вообщем читайте маны - они рулят ;-)
SO_REUSEADDR
Indicates that the rules used in validating addresses supplied
in a bind(2) call should allow reuse of local addresses. For
PF_INET sockets this means that a socket may bind, except when
there is an active listening socket bound to the address. When
the listening socket is bound to INADDR_ANY with a specific port
then it is not possible to bind to this port for any local
address.
|