Ciao ragazzi, apro questo post, anche se è lo stesso programma descritto in quest'altro topic, perchè ho un problema che non riesco a risolvere!!!
All'interno di un thread richiamo la funzione ricerca3 che cerca all'interno di un file user
ass! La funzione stestata a parte funziona tranquillamente mentre nel programma in cui è inserita no. O meglio, ritorna sempre 0!!
spero sappiate aiutarmi
codice:
void* my_thread_listen(int DescrittoreSocketrecv)
{
char buffer[512];
int NuovoSocket;
int exitCond=0;
int Quanti;
int n=0;
//struct timeval tv;
fd_set readfds;
FD_ZERO(&readfds);
printf("Server: Attendo connessioni...\n");
while (!exitCond)
{
FD_SET(DescrittoreSocketrecv,&readfds);
//Test sul socket: accept non blocca, ma il ciclo while continua
//l'esecuzione fino all'arrivo di una connessione.
n=select(99999,&readfds,NULL,NULL,NULL);
if(n>0)
{
if ((NuovoSocket=accept(DescrittoreSocketrecv,0,0))!=-1)
{
//Lettura dei dati dal socket (messaggio ricevuto)
if ((Quanti=read(NuovoSocket,buffer,sizeof(buffer)))<0)
{
printf("Impossibile leggere il messaggio.\n");
ChiudiSocket(NuovoSocket);
}
else
{
//Aggiusto la lunghezza...
buffer[Quanti]=0;
//Elaborazione dati ricevuti
if (strcmp(buffer,"exit")==0)
exitCond=1;
else printf("Client: %s \n",buffer);
//traduci stringa del client per capire la direttiva
char* cmd=stringcmd(buffer);
if(strcmp(cmd,"1:")==0)
{
int flag;
pthread_t thlogin;
pthread_create(&thlogin,NULL,login,buffer);
pthread_join(thlogin,flag);
//Tentativo di login
printf("Tentativo di login\n");
}
}
//Chiusura del socket temporaneo
ChiudiSocket(NuovoSocket);
}
}
}
}