_sda 0 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба Есть самодельный девайс который связан с РС кабелем гигабитного эзернета,протокол UDP. РС отсылает девайсу команду "старт" и девайс начинает отправлять в РС пакеты с данными пока не придёт команда "стоп". Минимальный интервал между отсылаемыми пакетами - 1мс, максимальный интервал не определён - пакеты отсылаются по мере накопления данных. Наш программист в ступоре, он привык работать в режиме запрос-ответ с применением поллинга. Можно ли выполнить такой алгоритм на РС? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1113 5 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба замените программиста Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба замените программиста Это нереально.А по сути что нибудь можете посоветовать? Как без поллинга узнать что нужный пакет пришёл? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1113 5 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба вам нужно с поллингом или без поллинга? насколько мне представляется механизм сокетов, ваше приложение может периодически обращаться к приёмному буферу и по ответу видеть - есть пакеты или нет пакетов. как часто это делать - ваше дело. хоть раз в час, если размер приёмного буфера PC позволяет накапливать данные за это время Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба вам нужно с поллингом или без поллинга? насколько мне представляется механизм сокетов, ваше приложение может периодически обращаться к приёмному буферу и по ответу видеть - есть пакеты или нет пакетов. как часто это делать - ваше дело. хоть раз в час, если размер приёмного буфера PC позволяет накапливать данные за это время Спасибо! Т.е. ничего неестественного в таком алгоритме нет? Интересно, а как долго принятые пакеты могут находиться в приёмном буфере РС без обработки? Меня бы очень устроило забирать из буфера все пришедшие пакеты сразу с интервалом в 1 секунду. Так можно сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1113 5 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба раз в секунду - это не то время, о котором нужно беспокоиться Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба раз в секунду - это не то время, о котором нужно беспокоиться А можете чуть развернуть тему? Значит без обработки принятые пакеты будут спокойно лежать во входном буфере пока программа их не заберёт? Я же не программист РС и этих нюансов не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1113 5 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба да Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 14 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба Как без поллинга узнать что нужный пакет пришёл? Использовать GetOverlappedResult. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба да Спасибо! Значит в понедельник буду напрягать программиста. :beer: p.s. Вы такой разговорчивый... Использовать GetOverlappedResult. Спасибо за направление! Но эта функция вроде работает с файлами, или нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 14 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба Спасибо за направление! Но эта функция вроде работает с файлами, или нет? Вашему программисту следует почитать документацию на Winsock2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба Всем большое спасибо за помощь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 17 сентября, 2016 Опубликовано 17 сентября, 2016 · Жалоба Советую посмотреть на python , я вооооообще в программировании не волоку , но интереса ради и от скуки , лёжа в больнице за полчаса (потому что тормоз) сделал по примерам из инета клиент - сервер приложение, UDP обмен без запросов, а прям как вам надо. Вроде что-то похожее на это : http://snakeproject.ru/rubric/article.php?...k_server_client https://habrahabr.ru/post/149077/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 19 сентября, 2016 Опубликовано 19 сентября, 2016 · Жалоба Да, python вещь хорошая, но это совсем другая история. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 19 сентября, 2016 Опубликовано 19 сентября, 2016 · Жалоба ...другая история. под форточками можно как угодно. Если ему нравится поллинг - пускай делает _beginthread(...) и поллит в отдельном потоке. Правда 100% процессорного времени будет жрать. Если, как тут уже прозвучало выше, сделать нормальный вэйтинг (в этом отдельном потоке) на WSA событийном хэндлере сокета, то и будет дёргаться лишь в тот момент когда что то свалилось из сети. Далее тупое чтение и разбор. ну понятно что механизм масштабирования сразу заводим, автомат разбора и анализа загрузки - чтоб оно само подстраивалось под нагрузку. короче говоря - программисту учиться. Можно начать с Рихтора "Windows для профессионалов" плюс МСДН. Разделы синхронизации, объекты ядра. А МСДН - сокеты, оверлапед режим. (круглый) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться