URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4099
[ Назад ]

Исходное сообщение
"Binding port in FreeBSD"

Отправлено drone , 28-Мрт-05 13:29 
OS FreeBSD. Проблема следующая. Если забиндить порт (функция bind),
а потом некорректно завершить приложение, то при последующих
попытках открыть этот порт происходит ошибка, мол, порт уже занят.

Как с этим боротться?

Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"Binding port in FreeBSD"
Отправлено Alexander S. Salieff , 28-Мрт-05 17:33 
>OS FreeBSD. Проблема следующая. Если забиндить порт (функция bind),
>а потом некорректно завершить приложение, то при последующих
>попытках открыть этот порт происходит ошибка, мол, порт уже занят.
>
>Как с этим боротться?
>
>Заранее спасибо.

Лечится это дело вот такой операцией перед bind'ом :
int ss_n=1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&ss_n, sizeof(ss_n));


"Binding port in FreeBSD"
Отправлено PoizOn , 29-Мрт-05 10:13 
>>OS FreeBSD. Проблема следующая. Если забиндить порт (функция bind),
>>а потом некорректно завершить приложение, то при последующих
>>попытках открыть этот порт происходит ошибка, мол, порт уже занят.
>>
>>Как с этим боротться?
>>
>>Заранее спасибо.
>
>Лечится это дело вот такой операцией перед bind'ом :
> int ss_n=1;
> setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *)&ss_n, sizeof(ss_n));
А нельзя ли пояснить код?
А то у меня такая же проблема на Perl.


"Binding port in FreeBSD"
Отправлено MaximKuznetsov , 29-Мрт-05 10:27 
>>>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.