inlandchris Ответов: 1

Какое лучшее IP-решение в C++


Я программирую на C++ с 1989 года. Однако это были внутренние программы для GTE. Теперь у меня есть очень большой проект (сейчас на пенсии), который я хочу изменить с последовательного опроса на TCP/UDP. Дальний конец-это устройства RS422, которые общаются по 4 проводам и могут быть преобразованы в виртуальные порты USB. Теперь, когда я это сделал, есть необходимость отказаться от всего этого и пойти с IP. Есть несколько конвертеров, которые преобразуют такие устройства, как мое, в IP.
Вопрос: каков наилучший способ опроса этих устройств-TCP или UDP? Имейте в виду, что каждый конвертер может обрабатывать до 64 устройств, а моя программа может обрабатывать 4 из этих устройств (или 4 шины, если они последовательные).
Я использую 4-х нитка данным последовательной шины и думали тоже по IP. Я думаю, что потоки более эффективны, чем ожидание ответа на сообщение, потому что оно зависит от операционной системы, занято оно или нет; потокам все равно. Устройства RS422 отправят шестнадцатеричный сигнал с просьбой открыть дверь, а затем компьютер отправит либо ok, либо нет. Каждую минуту компьютер будет сканировать устройства, чтобы убедиться, что они все еще подключены. Таким образом, любая из сторон должна будет начать общение, и компьютер должен быть готов к ответу быстро (<50 мс), чтобы открыть дверь. Что кто-то думает и почему? UDP или TCP? или что-то еще?
Заранее спасибо

Что я уже пробовал:

покупка 8 книг по этому проекту авторов Дугласа Шмидта, Стивена Д. Хьюстона "ACE Programming", У. Ричарда Стивенса, Дугласа Э. Комера и Майкла Дж. Надеюсь, изучение этих книг и ваших ответов даст мне фору.

1 Ответов

Рейтинг:
10

Albert Holguin

Ну, если вы не уверены, то TCP/IP обычно должен быть вашим переходом по умолчанию. Это потому, что у него есть много аккуратных встроенных накладных расходов, которые очень полезны, таких как повторные передачи и проверка ошибок, которых нет у UDP. UDP следует использовать, когда вам нужны высокоскоростные передачи, где вы не возражаете иногда терять пакеты (VOIP/video и тому подобное).

Например, если вы проверяете, находится ли устройство в сети, отправка дейтаграммы (UDP) может привести к потере пакета... в этом случае вы даже не будете знать, получил ли удаленный компьютер пакет в первую очередь (то есть если он был потерян в пути). С другой стороны, поток (TCP) будет иметь процесс рукопожатия и пытаться доставить несколько раз, прежде чем определить, что доставка невозможна.