Передача файла / данных между двумя произвольными источниками
Я ищу простой способ реализовать этот сценарий:
Скажем, у меня есть две машины, между которыми я хотел бы поделиться данными. Расположение / адреса этих машин могут измениться в любое время. Я бы хотел, чтобы обе машины зарегистрировались на центральном сервере и объявили о своей доступности. Одна из двух систем хочет извлечь файл из другой. Я знаю, что система приемника может сделать запрос к серверу, который затем запрашивает файл из источника, извлекает его, а затем передает его запрашивающей стороне. Однако это кажется неэффективным с точки зрения пропускной способности. Файл будет передан дважды. Существует ли система, в которой источник может транслировать ее непосредственно в приемник?
Без возможности гарантировать такие вещи, как переадресация портов, если система находится за брандмауэром и т. Д., Я не знаю способа.
Благодарю.
1 ответ
Когда машина A
хочет отправить данные на машину B
, A
отправляет запрос на центральный сервер C
, C
спрашивает B
для разрешения. Если принято, C
дает B
IP и порт для A
, A
пытается подключиться к B
непосредственно. Если неудачно (то есть, если B
за роутером / брандмауэром), то A
оповещает C
неудачи. C
затем дает A
IP и порт для B
, B
пытается подключиться напрямую к A
(который должен быть в состоянии пройти через B
брандмауэр / роутер). Если какое-либо соединение успешно, то A
имеет прямое соединение для отправки данных B
, Если оба соединения неуспешны (то есть, если A
также за брандмауэром / роутером), то C
должен действовать как прокси для всех переводов между A
а также B
,