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 <[email protected]> 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 > [email protected] > http://ml.ninux.org/mailman/listinfo/wireless > > _______________________________________________ Wireless mailing list [email protected] http://ml.ninux.org/mailman/listinfo/wireless
