Newsgroup: it.comp.lang.c
Titolo: socket e terminazioni anomale

Ho vari processi che comunicano tramite sockets( 1 server e 4 client). Mi 
chiedo come gestisco l' improvvisa terminazione da parte di uno di essi, 
gli altri processi in gioco dovrebbero essere avvisati onde evitare 
anomalie nel proseguimento dell' esecuzione.
Mi chiedo se sia implicito nelle chiamate read e write, ad esempio ho un 
client in attesa su una read, ed il server invece di eseguire la write 
corrispondente termina. In tal caso la read non dovrebbe restituire -1?
Nel mio codice il client si sblocca dall ' attesa della read tuttavia non 
cattura l' errore e prosegue l' esecuzione saltando anche le successive 
read e write. E' sbagliato il mio codice oppure devo trovare altre 
soluzioni?
Grazie della vostra gentile collaborazione, ciao.
-- 
Se nulla si crea e nulla si distrugge, ma tutto si trasforma, da dove
diavolo e' uscito Bill Gates?

 soluzioni?
sa di sbagliato ... le cadute su protocollo ip disolito sene occupa
direttamente il kernel e tu non le vedi neanche, il problema e' che tu
dovresti progettare un protocollo e tenere conto di tutti i punti che devi
assolvere e che devi correggere, vedi mancate ricezioni di messaggi o
timeout di client, qui' dovresti tu nel tuo protocollo decidere cosa fare
che cosa bloccare del tuo codice che strutture vanno cestinate che soluzioni
di drop nel server, cioe' se e' una chat l'avviso agli altri partecipanti
dopo di che la rimozione dell'utente dalla lista e del suo indirizzo di
resend.
bhe non sono proprio aspetti da prendere alla leggera, un protocollo va
studiato per benino sul suo utilizzo seno' poi ti trovi che ti manca
qualcosa e non sai piu' come inserirlo senza doverti smazzare dinuovo tutto.
ecco perche' disolito si cerca di dividere la parte di rete dal codice ed
astrarla il piu' possibile, cosi' se devi percaso riscrivere il codice di
rete non ti massacra tutto il resto del programma, pero' anche dalla parte
di interfaccia tra i due prima ci devessere stato un buono studio di
utilizzo, seno' ti trovi in mano un progetto che porta modifiche a catena e
non ti lavi piu' le mani.
spero di essere stato utile ciao

 spero di essere stato utile ciao
-- 
Il metronotte e' lo strumento per misurare il buio?
                -- Daniele Bortolotti

 programmazione di rete tra cui la definizione di protocolli.
appunto quota meglio.
ora io ti direi prima di tutto guardati un protocollo usato in rete, io come
primo protocollo ho visto (non mi viene il nome porca il quaderno ara'
seppellito sotoo altri 300 libri ... uff) cmq diciamo che era un protocollo
semplicissimo e si poteva usare su una connessione tramite porte com ed
aveva il sistema di piggy-back.
ora tu hai proposto due vie che pero' sono molto approsimative, vuoi essere
sincrono o asincrono sulle letture e scritture ??? cioe' vuoi avere un
protocollo che tu chiami la funzione send_message ed il tuo programma si
ferma ad aspettare che questa ti restituisca ok il messaggio e' arrivato o
vuoi spedire dimenticartene e testare solo ogni tanto se e' andato male
qualcosa?
il mio consiglio cmq e' di magari studiarti qualche protocollo semplice
almeno per capire come funzionano ... non so tipo l'SMTP il POP che usi per
le mail sono protocolli testuali molto semplici e di facile implementazione
se vuoi.
il problema e' che o hai messaggi completamente slegati fra di loro ed
allora li mandi direttamente su tcp o quello che usi, o seno' devi
costruirti un tuo protocollo da incapsulare che ti gestisce lo stato della
tua connessione con il client.
ora non sapendo che usi non so suggerirti meglio, anch'io queste cose le ho
viste teoriche ed ho solo fatto una piccolissima implementazione su porta
com che cmq dava problemi di sincronia (ma erano problemi del linguaggio
usato per programmarlo) cmq non riesco a capire come fai a continuare a
leggere porcheria dalla connessione che tipo di interfaccia usi ?
ciao