|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Mar 2014
Messaggi: 6
|
[C] Socket Client/Server
Buongiorno a tutti!
Ho un problema nella realizzazione di una chat client/server. Il problema è che non riesco a gestire due client, ovvero il server risponde solo a uno e non a piu di un client connessi. Il codice del server è piu meno cosi: Codice:
creo socket serverfd
bind();
listen(serverfd, );
pthread_t invio;
pthread_t ricevo;
while(true){
clientfd=accept(serverfd, );
new_client=malloc(1);
*new_client=clientfd;
pthread_create(&invio, NULL, funz_invio, (void*) new_client);
pthread_create(&ricevo, NULL, funz_ricevo, (void*) new_client);
return 0;
} //fine main
void *funz_invio(void *socket){
int sock= *(int*) socket;
while(){... send(sock, )..}
}
void *funz_ricevo(void *socket){
int sock= *(int*) socket;
while(){... recv(sock, ) ..}
}
}
cosa succede: il client si connette (e scrive e riceve con il server) //tutto ok! il client2 si connette (e scrive al server.. ) // tutto ok! il problema è che se il server scrive... riceve solo il client1 e non il client2 come è possibile? dove sbaglio? grazie a tutti quelli che mi daranno una mano!+ |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Tanto per cominciare perché con questa
new_client=malloc(1); allochi "un byte" ? Che ci fai con un byte? |
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Mar 2014
Messaggi: 6
|
Quote:
L'ho corretto dopo. Però il problema sta altrove.. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
così su due piedi credo che il problema stia nella logica
tu dovresti creare un thread per client, non un thread per invio ed uno per ricezione.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Mar 2014
Messaggi: 6
|
Quote:
Aspetto.. quando un client chiede di connettersi lo accetto.. e per ogni client che accetto apro due thread.. uno per inviare e uno per ricevere... Io l'avevo pensata cosi... |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:37.




















