Newsgroup: it.comp.lang.c
Titolo: Problemi di TIME_WAIT

Ciao a tutti!
Probabilmente l'eta' si fa sentire, ma non riesco proprio a capire dove
sbaglio...
Ordunque, sto scrivendo un piccolo programma di test (che poi integrero'
in un altro programmone, non proprio di test...) che accetta connessioni
sulla porta 54321.
Il Programma accetta UNA sola sessione per volta (questo mi e'
fondamentale!), e quindi ogni altra connessione viene chiusa, dopo aver
spedito un errore.
Ovviamente, quando un nuovo Client si presenta, il Server fa un fork() e
crea un nuovo processo per il client (che fara' quel che deve fare, oppure
spedira' l'errore, nel caso ci sia gia' un client connesso).
Ora succede che, quando il client viene disconnesso mi rimane la porta in
stato TIME_WAIT e non riesco proprio a capire perche'...
Ovviamente il socket del client lo chiudo, sia nel main() del Server, sia
nel processo figlio che viene creato.
Qualcuno sa dirmi dove sbaglio? Se e' il caso, posso mandare il sorgente
(143 righe).
Grazie
Luca Bertoncello
(
luca...@lucabert.de
)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 questo articolo e` stato inviato via web dal servizio gratuitohttp://
www.newsland.it/newssegnala
 gli abusi ad 
ab...@newsland.it
Non sbagli. Il time wait è normale e ci deve stare. E' uno stato
importante della comunicazione in TCP.
Ciao!


Questa non e' proprio una domanda di C, ma di UNIX, in particolare TCP/
IP.
Questo newsgroup non e' il luogo adatto per discuterne, qui basterebbe
dire che e' una delle 'features' del TCP/IP.
comp.programming.unix e' un posto migliore per fare queste domande.
Tra l'altro ci sono vari libri famosi al riguardo, come lo Stevens.

 importante della comunicazione in TCP.
Tanto normale non mi sembra... Tant'e' che, se chiudo il programma e
voglio riavviarlo, NON mi riparte dandomi un "Bind error"...
Mi potrebbe anche star bene che ci siano dei TIME_WAIT intanto che il
programma gira, ma quando finisce DEVONO essere segati via...
Hai mai visto Apache o SSH o qualsiasi altro programma che lascia dei
TIME_WAIT sparsi una volta chiuso? Io, mai!
Quindi sbaglio qualcosa...
Ciao
Luca Bertoncello
(
luca...@lucabert.de
)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 stato TIME_WAIT e non riesco proprio a capire perche'...
Perch� � cos� che funziona il protocollo TCP/IP.



Allora... Gira la domanda su un gruppo più appropriato, come ti ha
consigliato giustamente fnegroni. Per quello che può valere il mio
parere, non conosci bene l'argomento. Riguarda meglio le connessioni
di apache o ssh, e i time-wait li trovi. L'errore sul binding è un
altro paio di maniche.

 TIME_WAIT sparsi una volta chiuso? Io, mai!
E allora non hai visto bene. La logica alla base del TIME_WAIT prescinde
dal livello applicativo.


 aggiornato il protocollo TCP/IP senza avvisare la comunit�? :)
Io no! E in effetti, ora che vedo, mi accorgo di aver detto una ca$$ata...
In effetti anche Postfix mi lascia i TIME_WAIT...
Allora la domanda e': come mai Postfix riesce a ripartire nonostante i
TIME_WAIT e il mio programma no?
Cosa fa Postfix in piu' che io non faccio?
Grazie
Luca Bertoncello
(
luca...@lucabert.de
)


 [...]
Ciao  Manlio

Manlio Perillo ha scritto:



Proprio quello! "Address already in use" quando faccio il bind().
Idee?
Grazie



http://www.opengroup.org/onlinepubs/009695399/functions/setsockopt.html
Ciao  Manlio

 
http://www.opengroup.org/onlinepubs/009695399/functions/setsockopt.html
Mmm... OK...
Dico giusto se dico che devo usare SO_REUSEADDR?
Ciao


 Dico giusto se dico che devo usare SO_REUSEADDR?
Mi rispondo da solo...
Da un rapido test, direi che e' l'opzione giusta!
Grazie della dritta!


 un programma server...
L'avevo interpretata come "non mi d� il bind error". Per il resto ti hanno
gi� risposto.
