Воскресенье, 29 Декабря 2024, 00:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
SDLNet ожидание данных со стороны сервера
gunsoyДата: Вторник, 22 Апреля 2014, 19:45 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте.

Есть сервер и клиент. Сервер на Linux epoll, а клиент на SDL (SDLNet для сокетов), так как нужна кроссплатформенность. Авторизацию я реализовал без проблем, но далее возникли проблемы.

Вот главный цикл на стороне клиента

Код

while(Running)
      {
            unsigned int resultRecv;
          char buf[1024];
          resultRecv = SDLNet_TCP_Recv(sock, (char *) buf, 1024);
          if(resultRecv)
          {
            //.......
          }
              SDL_PumpEvents();
          while(SDL_PollEvent(&Event))
          {
              OnEvent(&Event);
              break;
          }
          OnLoop();
          OnRender();
      }
      OnCleanup();


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

Мне нужно чтобы что-то вроде SDLNet_TCP_Recv висело в главном цикле и запускалось только если придут данные от сервера, не останавливая работу программы.
Средства SDL позволяют это сделать?

Спасибо за внимание.


Сообщение отредактировал gunsoy - Вторник, 22 Апреля 2014, 19:53
jackbvДата: Вторник, 22 Апреля 2014, 19:55 | Сообщение # 2
почетный гость
Сейчас нет на сайте
может лучше ожидание ответа в отдельный поток запихать?

- Java
- PHP, JavaScript
- HTML/CSS
DeadlySquare
Run or Die
Super SQUARE
gunsoyДата: Среда, 23 Апреля 2014, 05:41 | Сообщение # 3
был не раз
Сейчас нет на сайте
Если не найдётся какого-либо SDL способа, то в отдельный поток запихаю. Спасибо за совет.

Добавлено (22.04.2014, 20:57)
---------------------------------------------
В Линукс для сервера я использовал pthread-потоки, а в Виндовс pthread будет работать или мне что-то другое (кроссплатформенное) искать? Я что-то никак не могу найти информацию.

Добавлено (23.04.2014, 05:41)
---------------------------------------------
Оказывается в SDL существует SDL_thread.

  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг