ПЕРЕНАСЫЩЕНИЕ:есть какой-нибудь способ добавить хук “для чтения файлов” в цикл событий?

StackOverflow https://stackoverflow.com/questions/185033

  •  06-07-2019
  •  | 
  •  

Вопрос

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

Спасибо!

Это было полезно?

Решение

ПЕРЕНАСЫЩЕНИЕ не очень хорошо поддерживает это.Видишь ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ о ПЕРЕНАСЫЩЕНИИ #18

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

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

(Взято из Руководство Beej по созданию сетей)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top