2010-06-10 2 views
3

В настоящее время я использую поток для асинхронного вызова соединений и отправки. Все это работает нормально, но теперь я хочу сделать асинхронным получение. Как получить данные без приостановки всей очереди во время ожидания данных? Единственное решение, о котором я могу думать сейчас, - это второй поток.Как обрабатывать получение асинхронного сокета в C++?

+0

рамки? увеличение? Qt? необработанный API Windows? линукс? Скажите еще, пожалуйста. –

ответ

6

Посмотрите на non-blocking sockets и избирательных API, как select(2)/poll(2)/epoll(4)/kqueue(2).

В частности, на C++, посмотрите на boost::asio.

+0

Неблокирующих сокетов должно быть достаточно, если вы обрабатываете случай, когда recv() не считывает никаких данных (что очень просто). Использование select() или что-то подобное имеет свои преимущества, но также и недостатки. Вам решать, что лучше подходит вашим потребностям. – PeterK

Смежные вопросы