Entra

View Full Version : [C] Problema organizzazione comunicazioni con socket


lefantome
10-11-2010, 17:27
Allora sto sviluppando un server di messaggistica istantanea con relativo client in locale utilizzando sockets AF_UNIX.

Mi sono creato il mio server che gestisce il log in e crea un thread per ogni utente connesso (un socket per ogni connessione client-server)

Il client invece ha due thread: uno che invia messaggi sul socket e un'altro che legge i messaggi sempre sullo stesso socket. (pare che così vada fatto)

Ora finché non creavo thread nel client e mi lititavo a fargli mandare messaggi al server e a riceverli con un rendez vous andava tutto bene.

Adesso ho creato i due thread (con mutua esclusione sul socket di connessione al server)

Ma quando faccio partire il programma anche solo con il thread che invia valgrind mi trova errori nel thread del server nel buffer della write e in un parametro (cont) della read.

Praticament ele due chiamate vengono eseguite lo stesso.
Tutto questo alla sola connessione con il client che non invia assolutamente niente.

Se elimino i due thread dal client e torno alla normalità funziona normalmente.

Come debuggo? DDD non funziona. devo portarmi tutto il progetto su eclipse? :muro:

Domanda teorica:

Ho la mutua esclusione sul socket dal lato client e va bene.
Ma come faccio a impedire che client-inbox legga messaggi lasciati da client-sender e non ancora letti dal server?