Передача файла по двум разным сетям с использованием общей точки доступа - PullRequest
1 голос
/ 23 февраля 2012

Скажем, у меня есть три компьютера: A,B,C: где (A,B) образуют сеть (подключены напрямую), а (B,C) подключены напрямую. Теперь я хочу передать файл, используя Java Sockets от A до C (или наоборот). Могу ли я сделать это напрямую, используя обычный перевод? Теоретически, поскольку они образуют две сети с разной схемой IP-адреса, создание серверного сокета на одном из компьютеров не приведет к его обнаружению клиентским сокетом на другом.

Если это не так, то делает ли B промежуточный хост, который просто буферизирует и выводит поток файлов?

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

1 Ответ

1 голос
/ 23 февраля 2012

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

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

Первый подход лучше с точки зрения производительности, если он работает.Но при втором подходе вы можете применить дополнительные проверки безопасности в B, прежде чем пересылать данные в A. Это полностью зависит от ваших требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...