Является ли надежным протоколом связи сокетов для межпроцессного взаимодействия?

Я разрабатываю протокол связи, который будет использоваться для связи между двумя приложениями ПК с использованием соединения через сокет. Самый распространенный случай, когда оба приложения работают на одной машине, но можно будет запустить одно приложение на удаленной машине. Приложение может обмениваться некоторыми данными со скоростью до 2 Мбит/с. Вопрос в том, должен ли я использовать пакеты подтверждения, чтобы убедиться, что пакет, отправленный одним приложением, был получен другим? Я знаю, что сокет использует TCP-соединение, поэтому подтверждение/повторная передача уже реализованы, но мне нужен отзыв от того, кто использовал его на практике.

Используемые технологии: - сервер сокетов: приложение .NET, использующее следующую библиотеку: http://www.codeproject.com/KB/IP/AsyncSocketServerandClien.aspx — сокет-клиент: приложение .NET или Delphi.


person kmalmur    schedule 05.10.2011    source источник


Ответы (1)


Это нормально, трафик замыкается в стеке драйверов TCP/IP. Нет большой разницы с любым другим механизмом IPC, он просто выполняет копирование из памяти в память, поэтому работает на скоростях шины. Типичная скорость 5 гигабайт в секунду с микросекундой или около того для накладных расходов. Плюс любое переключение контекста, которое должно произойти, безусловно, самая большая стоимость. Именованный канал будет работать так же. Конечно, это падает с обрыва, когда вам нужно пройти через сетевой адаптер.

person Hans Passant    schedule 05.10.2011