Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Сети > Определить, что передача по UDP завершена |
Автор: Aoizora 11.2.2017, 23:14 | ||
Я пишу функцию для приложения, которая должна выполнять следующие задачи: 1. Соединиться с каждым из hardcoded клиентом p2p-сети 2. Послать ему запрос списка пиров, хранящегося в его локальной таблице 3. Принять пакеты, в поле данных каждого из которых находится информация о ноде 4. То же самое сделать со следующим элементом списка hardcoded серверов или вернуть управление из функции У меня пока что такой код:
Цикл по всем нодам, к каждой ноде выполняется запрос. Мне нужно как-то отсюда выйти, когда сервер перестанет посылать данные по UDP (или перейти к другому элементу списка). Как это сделать |
Автор: tzirechnoy 11.2.2017, 23:41 |
По таймаутам. Ну, ещё можно в сервере указать, когда последний пакет послан. Но по таймаутам -- абсолютно обязательно. |
Автор: Aoizora 12.2.2017, 00:03 | ||||
По таймаутам - это вот так?
|
Автор: _zorn_ 15.2.2017, 16:39 |
Что то типа этого делаешь ? ![]() https://aminux.wordpress.com/2017/01/12/gov-torrents-download/ А по поводу кода - да, без селекта ВООБЩЕ НИКАК. Так по ублюдочному сделан стек в винде. recv будет висеть ВЕЧНО... Я тоже споткнулся об это. Ну по логике - нет данных, верни что прочитал (0,1 или 0.5 на крайняк ![]() Причем такое даунское поведение именно тогда когда recv буфер пуст. |
Автор: Олег2005 12.3.2017, 22:32 |
Или использовать IOCP? На худой конец WSAEventSelect? |
Автор: _zorn_ 15.3.2017, 16:32 | ||
Так мне не нужен асинхронный. От колбеков и в яваскрипте тошнит. Хочу получить данные, обработать и дальше наслаждаться солнцем ![]() Уточню - наслаждение солнцем зависит от полученных данных. |
Автор: feodorv 16.3.2017, 20:26 | ||
Честно говоря, я не знаю, что там в JavaScript с асинхронными сокетами - колбек или нет, да и причем он тут, если речь идёт о C/C++. Сокет можно перевести в асинхронный режим через FIONBIO, а затем пользовать read безо всяких колбеков. Но речь-то идёт об этой фразе:
|