|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 99
|
[C] programmazione server e problematiche memoria
Ho come compito da fare un client che richiede una tripla di risorse ad un server. Il server deve principalmente supportare multiconnessioni ed evitare starvation. Il server io l'ho già fatto, ma il mio prof dice che c'è un errore nella gestione della memoria sulla chiamata accept
Codice:
void *thread_root(void *arg){
int temp_sd;
int SD = (int) arg;
while(1) { //ciclo infinito
if ((temp_sd= accept(SD, (struct sockaddr *)&client, &address_size))< 0){ //accettazione connessioni in ingresso
printf("Errore nella chiamata ACCEPT\n");
exit(-1);
}
pthread_t IDthread;
int res = pthread_create(&IDthread, NULL, thread_func, (int *) temp_sd); //creazione nuovo thread per la gestione della connessione
if (res != 0) {
printf("Creazione thread fallita!!!");
exit(0);
}else{
pthread_mutex_lock(&mutex_counter);
sockets_connected++; //incrementa il contatore dei client connessi
pthread_mutex_unlock(&mutex_counter);
}
}
}
Questa funzione che ho postato è il thread che riceve come parametro il socket in ascolto, e chiama thread diversi che gestiscono le singole connessioni man mano che i client si connettono. E' un thread unico, non ce ne sono altri identici, a differenza dei vari thread che vengono chiamati a gestire le singole connessioni che sono multipli. Se volete il codice del server completo (è un pò lungo) chiedete pure. Ringrazio chiunque voglia aiutarmi. Il Cozza |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:28.



















