Сокеты - лучший способ пойти? - PullRequest
2 голосов
/ 22 декабря 2008

Я работаю над инструментом, который должен был бы сообщать друг другу: отправлять и получать файлы с другими удаленными экземплярами инструмента через Интернет. Какой вариант связи лучше всего использовать в этом случае? Гнезда?

Ответы [ 6 ]

5 голосов
/ 22 декабря 2008

Сокеты - определенно не тот путь. Вместо этого вы должны использовать уже существующий протокол более высокого уровня, такой как FTP или даже HTTP. Сокеты предоставляют только функциональные возможности TCP / IP. Таким образом, для отправки / получения файлов вы должны в конечном итоге добавить логику приложения самостоятельно (например, вам нужно работать с потерянными пакетами). Протоколы более высокого уровня уже делают это для вас.

1 голос
/ 22 декабря 2008

Одним из аспектов HTTP является то, что хорошие, зрелые и (в большей или меньшей степени) проверенные на безопасность клиентские и серверные библиотеки HTTP доступны практически для любого языка или платформы. Это избавит вас от усилий по созданию и отладке ваших собственных приложений, и безопасность является серьезной проблемой, если HTTP-серверы могут быть доступны общедоступному Интернету.

РЕДАКТИРОВАТЬ: Для C # вы можете попробовать Windows Communication Foundation , который также поддерживает протоколы более высокого уровня.

0 голосов
/ 22 декабря 2008

Если все, что вам нужно, это простая передача файлов между экземплярами, я бы посоветовал изучить все доступные библиотеки клиент / сервер tftp для вашего языка.

0 голосов
/ 22 декабря 2008

Из ваших комментариев к другим ответам кажется, что вы путаете передачу файлов с шифрованием файлов. Как уже отмечали другие, вы можете использовать HTTP или FTP для передачи файлов. HTTP уже работает через SSL, который может проверять подлинность сервера, шифровать трафик и (с небольшой нагрузкой) проверять подлинность клиента.

Если вы хотите, чтобы сами файлы также были зашифрованы, лучше всего снова использовать то, что уже существует, например, PGP (или его реализация, такая как GPG). Вы также можете посмотреть на S / MIME, но PGP будет проще. Если вы заново изобрели свое собственное шифрование, вы обнаружите, что вам будет слишком много ловушек, которых вам будет трудно избежать.

0 голосов
/ 22 декабря 2008

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

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

Как и в других ответах, я бы не рекомендовал низкоуровневое сокетное соединение. HTTP, вероятно, будет верным путем.

0 голосов
/ 22 декабря 2008

Это во многом зависит от среды, в которой они работают. TCP-сокеты довольно просты в использовании, если вы проверяете, что чтение и запись успешны. Однако у вас могут быть некоторые проблемы с брандмауэрами, или вы можете не захотеть иметь дело с потоком необработанных байтов на каждом конце, и в этом случае лучшим решением будет протокол более высокого уровня, такой как HTTP или FTP.

Это также зависит от того, на каком языке вы работаете, и какая поддержка предоставляется для определенных протоколов в его библиотеках.

...