[Pluto-devel] Problemi con le Message Box
diego.joker@inwind.it
diego.joker@inwind.it
Mon, 25 Mar 2002 10:42:17 +0100
> Ciao a tutti, volevo chiedervi un aiuto per l'utilizzo della classe
> QMessageBox di QT, all'interno di KDE. Ho un problema di visualizzazzione
> che non riesco a capire: vi riporto subito il codice e poi vi dico che
> succede.
>
> // thread per la gestione dell' accept
> void *accept_thread(void*arg)
> {
> sockaddr_in from;
> int sockNum=3D(int)arg;
> int newSock;
> unsigned int fromLen=3Dsizeof(from);
> for(;;)
> {
> if ( (newSock=3D::accept(sockNum,(struct sockaddr *)&from,&fromLen)) > 0 )
> {
> char*pointer_IP=3D::inet_ntoa(from.sin_addr);
>
> QString *title=3Dnew QString("CONNECTION");
> QString *str=3Dnew QString(" Richiesta di connessione dall'host:");
> QString *ip_addr=3Dnew QString(pointer_IP);
> str->append(*ip_addr);
>
> QMessageBox ac(*title,*str,QMessageBox::Information,QMessageBox::Ok,0,0,0,0,TRUE,0);
> ac.exec();
>
> for (int i=3D0;i<32;i++) // i: indice di riga
> {
> if (i>31) throw;
> if (host[i][0]=3D=3D0)
> {
> for(int j=3D0;*pointer_IP!=3D0;j++) // j: indice di colonna
> host[i][j]=3D*pointer_IP++;
> break;
> }
> }
> set_idconn(newSock);
> }
> }
> pthread_exit((void*)0);
> }
>
>
> Questa =E8 la parte di codice di un driver di comunicazione per la gestione
> delle chiamate: un thread che si occupa di gestire il loop infinito di
> accept.
> Il problema =E8 che quando mi arriva una chiamata da un'host remoto devo avere
> il modo di visualizzare tale evento e lo faccio con una message box.
> Per=F2 nel momento in cui il sistema arriva ad eseguire la linea
>
> QMessageBox ac(*title,*str,QMessageBox::Information,QMessageBox::Ok,0,0,0,0,TRUE,0);
>
> segnala il seguente errore:
>
> unexpected async reply
>
> e si blocca l'esecuzione. Sono assolutamente sicuro del fatto che il
> problema risiede nella gestione del thread perch=E8 lo stesso codice senza il
> thread funziona perfettamente.
> Non so proprio cosa fare. . .