Передача файла / данных между двумя произвольными источниками

Я ищу простой способ реализовать этот сценарий:

Скажем, у меня есть две машины, между которыми я хотел бы поделиться данными. Расположение / адреса этих машин могут измениться в любое время. Я бы хотел, чтобы обе машины зарегистрировались на центральном сервере и объявили о своей доступности. Одна из двух систем хочет извлечь файл из другой. Я знаю, что система приемника может сделать запрос к серверу, который затем запрашивает файл из источника, извлекает его, а затем передает его запрашивающей стороне. Однако это кажется неэффективным с точки зрения пропускной способности. Файл будет передан дважды. Существует ли система, в которой источник может транслировать ее непосредственно в приемник?

Без возможности гарантировать такие вещи, как переадресация портов, если система находится за брандмауэром и т. Д., Я не знаю способа.

Благодарю.

1 ответ

Когда машина A хочет отправить данные на машину B, A отправляет запрос на центральный сервер C, C спрашивает B для разрешения. Если принято, C дает BIP и порт для A, A пытается подключиться к B непосредственно. Если неудачно (то есть, если B за роутером / брандмауэром), то A оповещает C неудачи. C затем дает AIP и порт для B, B пытается подключиться напрямую к A (который должен быть в состоянии пройти через Bбрандмауэр / роутер). Если какое-либо соединение успешно, то A имеет прямое соединение для отправки данных B, Если оба соединения неуспешны (то есть, если A также за брандмауэром / роутером), то C должен действовать как прокси для всех переводов между A а также B,

Другие вопросы по тегам