Добрый день!Как заставить приложение не оставлять соединений такого типа: "tcp4 0 0 192.168.0.1.63009 192.168.0.1.2156 TIME_WAIT"???
Всем заранее спасибо.
setsockopt(сокет,SOL_SOCKET,SO_REUSEADDR,(char *)&i,sizeof(i))где int i=1
man socket
>setsockopt(сокет,SOL_SOCKET,SO_REUSEADDR,(char *)&i,sizeof(i))
>
>где int i=1
>
>man socketэто только отключает сообщение об ошибке:"address already in use", а мне надо, чтобы соединения именно пропадали, а они висят,как зомби :(
>>setsockopt(сокет,SOL_SOCKET,SO_REUSEADDR,(char *)&i,sizeof(i))
>>
>>где int i=1
>>
>>man socket
>
>это только отключает сообщение об ошибке:"address already in use", а мне надо,
>чтобы соединения именно пропадали, а они висят,как зомби :(правильный ответ - никак. за подробностями "почему" почитайте умные книжки типа Стивенса.
// wbr
klalafuda правильно сказал. Единственное неудобство такого состояния - это невозможность запустить программу еще раз, пока состояние не отвалится. В разных ОС на это отводится разное время, но обычно порядка 2-3 минут.Потому я тебе и сказал пользовать REUSE_ADDR. Это не "только отключает сообщение об ошибке" - это позволяет опять захватить этот порт без ожидания этих самых 2-3 минут.
>klalafuda правильно сказал. Единственное неудобство такого состояния - это невозможность запустить программу
>еще раз, пока состояние не отвалится. В разных ОС на это
>отводится разное время, но обычно порядка 2-3 минут.
>
>Потому я тебе и сказал пользовать REUSE_ADDR. Это не "только отключает сообщение
>об ошибке" - это позволяет опять захватить этот порт без ожидания
>этих самых 2-3 минут.ну тогда уж SO_REUSEPORT
---man getsockopt---
SO_REUSEPORT enables duplicate address and port bindings
---man getsockopt---// wbr
В данном случае они одинаковы по своему действию.
>Добрый день!
>
>Как заставить приложение не оставлять соединений такого типа: "tcp4
> 0 0
>192.168.0.1.63009 192.168.0.1.2156
> TIME_WAIT"???
>
>Всем заранее спасибо.вот, чё люди пишут по этому поводу:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&c2coff=1&...$%p1.105867406@newssvr30.news.prodigy.comTIME_WAIT is the state
that a socket goes into _after_ a graceful shutdown has been completed, and it
stays there for four minutes (2*MSL, to be exact). This is, however, a normal
and desired state for such a socket to be in, so that any packets, duplicated,
retried, or erroneous, still bouncing around in the network get a proper
response.TIME_WAIT is good. In a properly written socket stack, TIME_WAIT sockets
aren't as "heavy" as open sockets (they only need to contain the source and
remote addresses and ports, and the fact that the socket is in TIME_WAIT
state), and so shouldn't noticeably impact the number of other sockets that
can be open.