2008-10-08 5 views

Répondre

2

GLUT ne supporte pas cela très bien. Voir GLUT FAQ #18

Vous pouvez enregistrer une fonction inactive avec glutIdleFunc et, dans la fonction inactive, interroger votre socket pour voir si de nouvelles données sont disponibles. Afin de ne pas bloquer lorsque vous lisez de votre prise, vous devez configurer votre socket pour être non-blocage en appelant:

#include <unistd.h> 
#include <fcntl.h> 
... 
sockfd = socket(PF_INET, SOCK_STREAM, 0); 
fcntl(sockfd, F_SETFL, O_NONBLOCK); 

(Tiré de Beej's Guide to Networking)

L'inconvénient de cette approche est que votre L'application vérifie l'état de la socket 60 fois par seconde, au lieu d'attendre que les données réseau entrent.

+0

Vous pouvez également utiliser la fonction select (2) pour vérifier si un socket dispose de données. Voir la page man sur http://linux.die.net/man/2/select –

Questions connexes