Как ускорить связь UDP в приложениях Windows XP - PullRequest
2 голосов
/ 30 ноября 2009

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

Приложение было разработано с использованием Microsoft Visual C ++ 6 и работает на Windows XP. Он состоит из 21 приложения, которые общаются друг с другом через сокеты UDP. Это симуляция встроенной системы авионики, используемой для отладки системы в среде ПК. Каждое из приложений имитирует узел во встроенной системе, а встроенная сеть моделируется по протоколу UDP. Изначально система работала на нескольких ПК, но теперь может работать на одном четырехъядерном компьютере.

Система работает, но связь раздражающе медленная. Однако открытие Internet Explorer и посещение одного или двух веб-сайтов настраивают что-то, из-за чего мои приложения могут очень быстро общаться друг с другом.

Итак, мой вопрос: что установил Internet Explorer при посещении веб-сайта, чтобы мое приложение также могло его настроить? Никто из первоначальных авторов системы до сих пор не работает, и у меня очень мало опыта программирования Windows.

Ответы [ 3 ]

2 голосов
/ 12 декабря 2009

это может не быть проблемой Windows

  1. проверьте ваш API, проверьте свой буфер и проверьте сообщения об ошибках 'getlasterror ()', который не вызывает INVALID (-1) и останавливает попытку программы использовать его, даже если ваша программа выполняется perfectit, возможно, у нее есть полезные предупреждения

  2. проверка ACK или скорости атаки - это распространенная проблема при передаче больших объемов данных по сетевым подключениям (<- 90% - это ваша проблема), вот полезная тема на эту тему (support.microsoft.com/ кб / 823764) </p>

  3. если ни одно из этих решений не работает, попробуйте проверить версию своего драйвера на веб-сайте manfucturer.

  4. В крайнем случае это те полезные идеи: , используйте эту программу www.lvllord.de для увеличения макс. половины / открытых соединений с 8 до 50 , Использование Windows Server Edition может увеличить некоторые интернет-программы , использование многопоточности с API сокетов может вызвать некоторую путаницу в API, если вы используете более 2 сокетов в разных потоках в многопоточном приложении, попробуйте оптимизировать производительность с помощью асинхронных сокетов или чего-то подобного (msdn.microsoft.com/en- us / library / ms738551 (VS.85) .aspx)

Итак, мой вопрос: что установил Internet Explorer при посещении веб-сайта, чтобы мое приложение также могло его настроить? Никто из первоначальных авторов системы до сих пор не работает, и у меня очень мало опыта программирования Windows.

может быть ACK, проверьте его на вики .. другими способами это означает скорость атаки .. если нет, то это будет размер окна приема
обе настройки невидимы для пользователей .. но могут быть установлены с помощью таких программ, как утилиты настройки или любые другие сетевые регуляторы скрытых настроек
это может просто сделать трюк ..

1 голос
/ 01 сентября 2010

Если протокол выше UDP реализует надежность, потеря скорости будет вызвана большой потерей пакетов UDP на локальном хосте. Производительность UDP на localhost ужасна, лучше всего обернуть сокет API внутри уровня TCP.

Если это широковещательная или многоадресная рассылка UDP, вам придется взглянуть на реализацию процесса посредника для мультиплексирования сообщений по TCP.

Может быть проще взглянуть на существующие API обмена сообщениями, которые хорошо работают на межпроцессном уровне, такие как ZeroMQ .

0 голосов
/ 04 декабря 2009

Попробуйте использовать Wireshark, чтобы увидеть, что делает Internet Explorer.

...