Передача файла / данных между двумя произвольными источниками - PullRequest
0 голосов
/ 14 сентября 2010

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

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

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

Спасибо.

1 Ответ

2 голосов
/ 15 сентября 2010

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

...