Ciao. La rcvfrom e' una chiamata bloccante, quindi o usi la sottocitata select o entri nel fantastico mondo dei thread e della programmazione concorrente...
Clauz On 07/22/2010 01:54 AM, ZioPRoTo (Saverio Proto) wrote: > Consiglio questa lettura: > http://beej.us/guide/bgnet/output/html/multipage/index.html > > nello specifico: > http://beej.us/guide/bgnet/output/html/multipage/advanced.html#select > > Saverio > > > Il 21 luglio 2010 19.05, Filippo Sallemi <tonyp...@gmail.com> ha scritto: >> Ciao ragazzi, >> sto giocherellando un po con C e stavo provando a scrivere un piccolo >> programma che manda pacchetti UDP ad un host solo che ho notato che la >> funzione rcvfrom resta bloccata finchè il server non manda una risposta >> anche vuota. >> >> Parte del codice esegue questo: >> >> read = sendto(sock, str, strlen(str), 0, (struct sockaddr *)&addr, >> sizeof(addr)); >> if (read < 0) { >> perror("Request error"); >> return -1; >> } >> >> read = recvfrom(sock, buffer, MAXLINE, 0, NULL, NULL); >> if (read < 0) { >> perror("Read error"); >> return -1; >> } >> >> /** >> * Print results >> **/ >> if (read > 0) { >> buffer[read]=0; >> if (fputs(buffer, stdout) == EOF) { >> perror("fputs error"); >> return -1; >> } >> } >> >> Ho provato a usare le fnctl per impostare la socket in modo non bloccante ma >> ottengo solo l'uscita dal programma e nessun invio di pacchetti. >> >> Adesso non è che mi importi tanto avere una risposta dal server e potrei >> ovviare al problema eliminando la parte di codice dove aspetto risposta, ma >> la mia curiosità dal punto di vista didattico rimane. >> Qualcuno saprebbe illuminarmi in qualche modo? >> >> Grazie >> >> Ciao >> >> -- >> Filippo Sallemi >> >> _______________________________________________ >> Wireless mailing list >> Wireless@ml.ninux.org >> http://ml.ninux.org/mailman/listinfo/wireless >> >> > _______________________________________________ > Wireless mailing list > Wireless@ml.ninux.org > http://ml.ninux.org/mailman/listinfo/wireless _______________________________________________ Wireless mailing list Wireless@ml.ninux.org http://ml.ninux.org/mailman/listinfo/wireless