GLUT: есть ли способ добавить «читаемый файл» хук в цикл событий? - PullRequest
0 голосов
/ 09 октября 2008

Я хотел бы открыть сокет и повесить читаемое событие в цикле событий GLUT ... есть идеи, как это сделать? Портативный стандартный код GLUT лучше, но я также открыт для взлома на платформе.

Спасибо!

1 Ответ

2 голосов
/ 19 октября 2008

GLUT не очень хорошо это поддерживает. См. GLUT FAQ # 18

Вы можете зарегистрировать функцию бездействия с помощью glutIdleFunc, а в функции бездействия опросить свой сокет, чтобы узнать, есть ли новые данные. Чтобы избежать блокировки при чтении из сокета, необходимо установить неблокируемый сокет путем вызова:

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

(взято из Руководство Биджа по работе в сети )

Недостаток этого подхода заключается в том, что ваше приложение будет проверять состояние сокета 60 раз в секунду, а не просто ожидает поступления сетевых данных.

...