![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 1 Всего: 56 |
интересует вопрос как реализовать прямой коннект между двумя машинами через глобальную сеть интернет.
На сколько я понимаю, обычные сокеты не подойдут , ибо машин может например находится за проксёй или НАТом. Принцип установки соедения как в p2p серверах : сходил на сервер , получил там ИП напарника, и дальше уже работаеь с напарником (без сервера!). |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
Сокет это механизм, к firewall или NAT отношения не имеет. По идее клиент, сидящий за NAT'ом может попросить раутер пропускать коннекты, курить это. Гугл выдал это.
Это головная боль клиента (человека) заставить раутер пропускать коннекты, если железо старое, то настройкой в ручную А дальше как обычно, узнаём IP:port либо с сервера, либо от других клиентов, подключаемся сокетами. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Таким образом клиенты только находят друг друга, а вот установка связи это совсем другое. Если оба клиента сидят за NAT, firewall, proxy (и порт форвардинг настроить нельзя), то соединяться они могут только через сервер. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 1 Всего: 56 |
LSD, а как же торренты, уверен большинство их использующих - это люди за натом.
ладно попробую разобратся в исходниках какого опен сорс торрента ... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
А ты почитай FAQ-ки по торрентам, там есть куча вопросов как реализовать проброску портов на роутере. В любом торрент клиенте есть индикатор показывающий виден ли он "снаружи". -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 1 Всего: 56 |
Выходит в качестве механизма я могу использовать сокеты и мне надо что бы один из компьютеров имел в интернете свой ИП (он будет сервером) а другой будет к нему конектится.
Добавлено через 11 секунд это не есть ахти хорошо (. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
Нет. Сидящий за NAT'ом человек видим как (IP:port), IP обычно (один из) IP раутера организующего NAT. При этом ты с другого конца даже не подозреваешь, что человек за NAT'ом. Эта связка публикуется на треккере, либо распространяется через других клиентов, т.е. "статический IP" не нужен. Оба клиента оповещают раутер (UPnP, либо ручной port forwarding), что хотят принимать пакеты, открывают серверный сокет, ждут.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
если проект для широкой аудитории - т.е. пользователи могут не иметь достаточной квалификации или не иметь возможности настроить локальную сеть (в офисах), то единственный способ соединения - по http через сервер посредник. |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 1 Всего: 56 |
рассматривается ситуация когда нет доступа до роутера для проброски портов. это будет не очень быстро + будет грузить сервер лишним траффиком... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Так работают все системы, или через центральный сервер или один из клиентов должен иметь внешний IP. В принципе, можно этого самого клиента использовать как сервер для других клиентов не имеющих внешнего IP. Но тут надо не переборщить, чтобы не забить его канал на 100%. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
Повторяю:
Ответ: существуют два типа соединений:
Добавлено через 6 минут и 51 секунду Млин, кажись не понял сути поста LSD, извиняюсь Да, треккер должен иметь постоянный IP, иначе клиентам не известно куда обращаться. Но это только seed, затем клиенты расшаривают свои списки других знакомых адресов, "облака" сеток склеиваются. Так Gnutella работает, довольно медленно... -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Всегда найдутся клиенты, для которых по разным причинам возможно соединение только по http на 80 порт. Поэтому клиентское приложение должно иметь возможность соединения по нескольким протоколам. Сначала делается попытка соединиться по "быстрым" протоколам. В случае неудачи осуществляется переход на "медленный" http. Такой принцип используется в RMI и упомянутых файлообменных системах. |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 1 Всего: 56 |
уу ... как круто ... хотья это наверное найболее оптимальный выход! |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |