Потеря данных безопасная связь между двумя машинами
У меня есть два приложения, работающие на двух отдельных (Windows) машина. Мне нужно надежное решение для связи между двумя приложениями, которое может допускать отключение короткого канала связи (например, перезапуск приложения приемника) без потери данных. Очевидные решения, которые я могу придумать:
- обмениваться данными через TCP-сокеты при установлении соединения и буферизации в памяти или файле, пока он отключен
- общаться через файлы на одном из компьютеров и использовать протокол передачи файлов (например, smb) для доступа с другого компьютера. Использование файлов для обозначения позиции чтения / записи файла.
Есть ли другая альтернатива? Каковы плюсы / минусы их? Существуют ли какие-либо библиотеки C/C++, реализующие решение?
1 ответ
Конечно, ваш предпочтительный выбор должен быть TCP. Потому что TCP будет гарантировать, что все, что кажется приложению отправленным, будет получено. В общем, подойдет любой протокол, ориентированный на соединение, и TCP является очевидным лучшим выбором здесь.
В вашем втором варианте - кажется, что есть много движущихся частей (например, отправка файла - получено какое-то уведомление для нового файла приложения или приложение опрашивает об изменении файла и затем читает этот файл и т. Д.), И одна из них идет не так, как надо. очень маловероятно. Я не уверен, что SMB использует - но если SMB использует TCP, разве вам не лучше просто использовать TCP? Поэтому файлы, использующие SMB, безусловно, не являются предпочтительным вариантом. ИМО.