[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