Перейти к содержанию
    

Вопрос по приёму Ethernet в РС

Есть самодельный девайс который связан с РС кабелем гигабитного эзернета,протокол UDP. РС отсылает девайсу команду "старт" и девайс начинает отправлять в РС пакеты с данными пока не придёт команда "стоп". Минимальный интервал между отсылаемыми пакетами - 1мс, максимальный интервал не определён - пакеты отсылаются по мере накопления данных. Наш программист в ступоре, он привык работать в режиме запрос-ответ с применением поллинга. Можно ли выполнить такой алгоритм на РС?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

замените программиста

Это нереально.А по сути что нибудь можете посоветовать? Как без поллинга узнать что нужный пакет пришёл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вам нужно с поллингом или без поллинга?

насколько мне представляется механизм сокетов, ваше приложение может периодически обращаться к приёмному буферу и по ответу видеть - есть пакеты или нет пакетов. как часто это делать - ваше дело. хоть раз в час, если размер приёмного буфера PC позволяет накапливать данные за это время

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вам нужно с поллингом или без поллинга?

насколько мне представляется механизм сокетов, ваше приложение может периодически обращаться к приёмному буферу и по ответу видеть - есть пакеты или нет пакетов. как часто это делать - ваше дело. хоть раз в час, если размер приёмного буфера PC позволяет накапливать данные за это время

Спасибо! Т.е. ничего неестественного в таком алгоритме нет? Интересно, а как долго принятые пакеты могут находиться в приёмном буфере РС без обработки? Меня бы очень устроило забирать из буфера все пришедшие пакеты сразу с интервалом в 1 секунду. Так можно сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

раз в секунду - это не то время, о котором нужно беспокоиться

А можете чуть развернуть тему? Значит без обработки принятые пакеты будут спокойно лежать во входном буфере пока программа их не заберёт? Я же не программист РС и этих нюансов не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да

Спасибо! Значит в понедельник буду напрягать программиста.

:beer:

p.s. Вы такой разговорчивый...

 

Использовать GetOverlappedResult.

Спасибо за направление! Но эта функция вроде работает с файлами, или нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за направление! Но эта функция вроде работает с файлами, или нет?

Вашему программисту следует почитать документацию на Winsock2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Советую посмотреть на python , я вооооообще в программировании не волоку , но интереса ради и от скуки , лёжа в больнице за полчаса (потому что тормоз) сделал по примерам из инета клиент - сервер приложение, UDP обмен без запросов, а прям как вам надо.

Вроде что-то похожее на это : http://snakeproject.ru/rubric/article.php?...k_server_client

 

https://habrahabr.ru/post/149077/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, python вещь хорошая, но это совсем другая история.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...другая история.

 

под форточками можно как угодно. Если ему нравится поллинг - пускай делает _beginthread(...) и поллит в отдельном потоке. Правда 100% процессорного времени будет жрать. Если, как тут уже прозвучало выше,

сделать нормальный вэйтинг (в этом отдельном потоке) на WSA событийном хэндлере сокета, то и будет дёргаться лишь в тот момент когда что то свалилось из сети. Далее тупое чтение и разбор. ну понятно что механизм масштабирования

сразу заводим, автомат разбора и анализа загрузки - чтоб оно само подстраивалось под нагрузку.

 

короче говоря - программисту учиться.

Можно начать с Рихтора "Windows для профессионалов" плюс МСДН. Разделы синхронизации, объекты ядра. А МСДН - сокеты, оверлапед режим.

 

(круглый)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...