Domanda

Vorrei aprire un socket e appendere un evento leggibile nel ciclo degli eventi GLUT ... hai qualche idea su come farlo? Il codice GLUT standard portatile è il migliore, ma sono aperto anche a hack specifici della piattaforma.

Grazie!

È stato utile?

Soluzione

GLUT non lo supporta molto bene. Vedi FAQ # 18 di GLUT

Puoi registrare una funzione inattiva con glutIdleFunc e nella funzione inattiva esegui il polling del tuo socket per vedere se sono disponibili nuovi dati. Per evitare il blocco quando leggi dal tuo socket, devi impostare il tuo socket come non-block chiamando:

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

(Tratto da Beej's Guide to Networking )

L'inconveniente di questo approccio è che la tua app controllerà lo stato del socket 60 volte al secondo, piuttosto che aspettare che arrivino i dati di rete.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top