[Pluto-help] Comunicazione di rete: GRAZIE

diego.joker a inwind.it diego.joker a inwind.it
Mer 20 Mar 2002 14:46:13 CET


Volevo ringraziare Roberto per il prezioso aiuto che mi ha fornito. Adesso funziona tutto perfettamente. C'è una cosa a livello di gestione dei thread che però non capisco; vi scrivo subito il codice e poi vi dico dov'è il problema

void *accept_thread(void*arg)
{	  		
	sockaddr_in from;
	int sockNum=(int)arg;
	int newSock;
	unsigned int fromLen=sizeof(from);
	for(;;)
	{      				
		if (  (newSock=::accept(sockNum,(struct sockaddr *)&from,&fromLen))  > 0 )
		{
			char*pointer_IP=::inet_ntoa(from.sin_addr);
			QString *title=new QString("CONNECTION");
			QString *str=new QString(" Richiesta di connessione dall'host:");
			QString *ip_addr=new QString(pointer_IP);
			str->append(*ip_addr);
			
			// a questo punto nel momento in cui il sistema esegue la segunete linea segnala un errore
			QMessageBox ac(*title,*str,QMessageBox::Information,QMessageBox::Ok,0,0,0,0,TRUE,0);
			ac.exec();
   				
			for (int i=0;i<32;i++)     						// i: indice di riga
			{
				if (i>31) throw;
				if (host[i][0]==0)
				{
					for(int j=0;*pointer_IP!=0;j++)  // j: indice di colonna
						host[i][j]=*pointer_IP++;
					break;
				}
			}
			set_idconn(newSock);
		}
	}
	pthread_exit((void*)0);
}

Quando il sistema arriva ad eseguire la linea riferita al QMessageBox segnale il seguente errore:

Xlib: unexpected async reply (sequence 0x3a4)!

Ora tale messaggio è abbastanza importante per segnalare che c'è una richiesta di connessione: ho il sospetto che ci sia un conflitto di dati a causa del thread.
Solo che non so proprio cosa fare anche perchè questa è la prima esperienza di programmazione c e soprattutto la prima in un sistema unix.
Confido ancora una volta nel vostro aiuto.





More information about the pluto-help mailing list