Hi,

On Sun, 12 Dec 1999, Mitja Bezget wrote:

> Hi!
> 
> Napisal sem si en programcek ki dela nekaj z socketi.. Naenkrat uporablja
> vec socketov in za vsak set socketov uporabljam drugi thread.. 
> recimo za sprejemanje novih connectionov mi skrbi newcon_th().. ko
> se zgodi da postane kak fd neveljaven (da client hangupa) je potrebno
> connection dropat.. to pa se ponavadi zgodi v drugem threadu.. 
> 
> in kje je problem?? ko poklicem close(s->fd) mi clienta ne odvrze..
> v netstatu ostanejo odprte povezave.. ce v telnetu sendas EOF (^D)
> in bash exita, ostane telnet odprt se do neskoncnosti.. zmrzne.. the
> only solution: ESCchar (^]).. zakaj mi ne prekine? 
> obstaja mogoce kaka secret setsockopt opcija za to?

Mogoce ne understandam cist kaj try-jas povedat, partially tudi
zaradi tvojega, excuse me, ... languageja.
Imam pa feeling, you know, da tisti telnet ne ostane openan
do infinityja ampak pod Linuxom only en minute.
Temu recejo TIME_WAIT ali 2MSL (maximum segment lifetime).
Ko se connection closea, v bistvu ta connection ostane still
alive, in sicer 2x toliko, kolikor je sistemski MSL. MSL je
v povezavi z enim poljem v headu IP paketov (TTL), ki omejuje
zivljenjski cas paketa... Vse to je zaradi tega, da se bolj
for sure do konca exchangeajo se poslednji podatki (data).
First checkej, a telnet connection po eni minuti res se zivi.
Stvar izgleda kot zadeva TCP-ja, ne tvojega programa.
Poslji kodo ;)

lp, matevz


Reply via email to