Salve,
sto implementando un server basato su connessione su socket, che gestisce le richieste di connessione da parte dei client dedicandogli un thread apposito.
In pratica:
codice:
while(1){
connessione = accept(listenSocket, (struct sockaddr*)&Client_addr, &sin_size);
ListaServer[n_serv++]=(HANDLE)_beginthreadex(NULL,0,(LPTHREAD_START_ROUTINE)server_dedicato,param,0,&ServID[id_serv++]);
}
dove server_dedicato è una funzione che riceve la struttura param(in cui è incluso il socket connessione), e , in base ai comandi inviati dal client,svolge determinate operazioni, dopodichè termina quando il client si disconnette.
Ora, funziona tutto regolarmente alla prima richiesta di connessione, e come da programma il mio server rimane in attesa di richieste di altre connessioni da altri client, mentre il thread nato dalla beginthreadex fa il suo lavoro.Se però un client cerca di connettersi mentre il primo thread è ancora al lavoro o anche dopo che questo è terminato, la connessione viene accettata, ma server_dedicato non parte(non esegue neanche una riga di codice), anzi termina tutto.
Non mi sembra che sia molto "concorrente" come server
.Qualcuno sa come mai questo comportamento??