Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Прямой обмен данными между компьютерами через интернет

30K
22 апреля 2012 года
МишаВорончук
23 / / 23.01.2008
Здраствуйте. Вопрос собственно в заголовке темы.
Подобные обсуждения уже есть на форуме - но там отсылки типа "юзай файлообменники" и "нафига это нужно".
Есть программа (уже давно работающая), которая реализует функции "облачного" плеера. На данный момент, "облачность" реализуется посредством размещения файлов на моих серверах, а также добавлением в каталог, лежащий на сервере, прямых ссылок на файлы лежащие на разных сайтах по всей сети. Если кто-то имеет желание поделится своими ссылками - заходит на спец. форум, и размещает их там. После проверки, я добавляю их в каталог.
Пользователи подбросили идею - сделать возможным добавление файлов прямо из программы, причем файлы хранятся на компьютере пользователя. То-есть получается одноранговая сеть.
Есть мысля сделать это так: при расшаривании файла, экзепляр программы посылает на сервер список файлов, с привязкой их по ip (напр. в текстовом файле. Название файла - адрес отправителя). Ip может быть динамическим, поэтому нужно организовать на том же сервере аналог dyndns. В принципе, каждый экземпляр программы будет представлять ftp сервер/клиент с динамическим ip.
И вот тут вопрос: Как правильно организовать аналог dynDns?
Проще так - как получить доступ к ftp серверу по его динамическому ip (пусть даже серому). Например тот что выдается всякими сервисами типа "какой мой ip" - не годиться. По нему доступ не идет, да он и актуален только для маршрутизатора (т.е. по нему можно попасть в веб-интерфейс роутера\маршрутизатора, а дальше - нет). Думал использовать tracert. Но маршрут то я получаю, но чего с ним делать потом? Как указать ftp клиенту - "зайди на 192.166.235.235 через 246.123.231.222 через..."? Просто с такой проблемой столкнулся впервые.
Может есть какой другой вариант организации обмена? Как он сделан например в скайпе или других подобных прогах? Ведь все упираеться, я так думаю, в тот же сервер где хранятся и раздаются DNS. Была мысль еще VPN - но тут я просто не нашел программных способов доступа к vpn (бибилотека может есть какая? неважно на чем, хоть на фортране)
ЗЫ. У меня для эксперимента стоит filezilla сервер и такой же клиент. Если кто-то знает как мне через динамику и NAT получить доступ к серверу (на одну сессию, используя тот ip что есть) - это и будет ответ на мой вопрос. Дальше разберусь.
277
23 апреля 2012 года
arrjj
1.7K / / 26.01.2011
Вариант А: vpn (настраивается из коммандной строки минус - пользователи других операцонных систем не смогут так работать) или p2p (jxta например)

Вариант Б: прямое подключение со стороны расшаривающего пользователя с маршрутизацией трафика через свои сервера(Т.е. пользователь А подключен к вашему серваку и расшарил чтото. Пользователь Б подключается к вашему серваку и запрашивает шару пользователя А. ваш сервак берет у подключенного А данные и дает их пользователю Б)


Или при "расшаривании" файлов тупо аплоадить их к вам на сервер.
30K
23 апреля 2012 года
МишаВорончук
23 / / 23.01.2008
vpn - тоже вариант. Была така мысль. Только был у меня негативный опыт работы с OpenVPN. Филлиал одного выша у нас в городе, имел связь по VPN с областным центром. Спецы из области приехали - настроили - на другой день всё это слетело. Попросили меня помочь. Я то его запустил конечно, но на это ушло пол-дня танцев с бубном. Если и делать vpn - то каким инструментарием пользоваться?
p2p - а что-то кроме jxta есть? Для дельфы там реализации по-моему нет. А программа у меня на делфи.Может, опять же, есть клиент с командной строкой?
Вариант Б: Если бы знал как расшарить файлы, то для меня не было бы проблемой реализовать и задумку с FTP. Но вот как? Я об этом по - сути и спрашиваю. Мне нада узнать как на моем сервере правильно записать ссылку на файл в удаленном компьютере. Если IP статика -ту проблем нет. А вот как все это забацать при маршрутизации? Я просто не знаю как правильно записать путь маршрутизации. Так например "111.111.111.111\222.222.222.222\100.100.100.100" - не работает. Я так понял это неправильно. Правильнее сделать как в DynDNS - на компе стоит программа которая при каждом подключении высылает ip на спец. сервак, и там присваивается этому ip новый dns. Вроде просто но как это сделать? Как это делают например qiup или аська? Skype - там p2p.
277
23 апреля 2012 года
arrjj
1.7K / / 26.01.2011
http://it.sander.su/udp-hole-punching.php
30K
23 апреля 2012 года
МишаВорончук
23 / / 23.01.2008
И то правда. Я как то и забыл про UDP. Хотя каждый день торрентами пользуюсь. Спасибо, буду рыть в указанном направлении.
30K
25 апреля 2012 года
МишаВорончук
23 / / 23.01.2008
Возник новый вопрос - как реализовать UDP hole punching на сервере. Клиент - там вроде ничего сложного нет. А вот серверная часть, которая будет получать и рассылать адреса с портами - это уже вопрос. В принципе на пхп написать могу, хотя и опыт работы с ним у меня очень не большой. Может есть готовые решения? Или возоможно лучше будет на VDS - сервере разместить десктопую прогу написанную на плюсах или делфи? Хотя если VDS - то можно и VPN сразу на нем же и поднять и вообще не париться. Но какая нужна мощность сервака? Насколько я понимаю VPN (а именно ее протокол pptp) там сервер будет использоватся только при соединении, а дальше обмен пойдет по "тунелю" между двумя машинами?
277
27 апреля 2012 года
arrjj
1.7K / / 26.01.2011
http://ru.wikipedia.org/wiki/STUN

http://habrahabr.ru/post/142858/
402
12 мая 2012 года
ToRNaDo
70 / / 27.01.2004
Почему бы пользователям не открыть хотя бы один порт на роутере?
Хотя бы некоторым? Это сильно упрощает решение проблеммы.
Те, кто порт не открыл, будут получать файлы через остальных, то есть каждый клиент должен иметь возможность маршрутизировать запросы.

Ещё, если ты собрался использовать FTP, то там есть режимы активный и пассивный, в обеих случаях указываются адрес и порт.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог