1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

[java|решено]как обойти nat для организации p2p соединения ?

Тема в разделе "Оффтопик", создана пользователем danilko, 20 окт 2014.

  1. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    Сидел тут делал, значит, свой лаунчер, p2p передачу клиента сделал и решил проверить вне локальной сети, для этого поднял на vbox'e несколько машинок, сымитировал сеть с двойным nat и выяснил, что upnp не совсем хорошо делает то, что мне нужно.

    Есть какие-нибудь идеи как обойти несколько nat'ов ? Я читал про nat-t, но не нашел библиотек. Можно конечно прокидывать туннели через сервер и другие не спрятанные натом узлы, но хотелось бы организовать нормальный p2p без посредников, чтобы не перегружать сервер и других участников раздачи.
     
  2. jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Ты хочешь сделать соц. сеть для восстаний и революций?...
     
  3. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    Нет, я делаю лаунчер с закачкой клиента по аналогу торрента, но мне не хватает последнего элемента - возможности передавать данные без посредников, а этому мешает нат.
     
  4. jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Ну не знаю... как вариант: Найти исходник uTorrent , он вроде OpenSource и посмотри, как там происходит передача данных...
    Кстати, это немного фиговая идея, так-как закачка клиента от игроков может происходить лишь при работе лаунчера, а оставлять фоновую работу лаунчера - будет не очень хорошо для компьютеров игроков, и в конечном счёте, кто-нибудь да заметит утечку данных...
     
  5. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    При моей реализации, когда лаунчер следит за создаваемой нагрузкой и отказывает в соединении при необходимости, сильных перегрузок у игрока не должно возникнуть.
    Попробую найти исходники торрент-качалок.
    Просто это очень удобно, так как скорость возрастает в несколько раз, при нормальном онлайне. Может быть я все-таки буду использовать только «супер-ноды», но хотелось бы найти способ задействовать максимальное число пиров.
     
  6. jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Если найдёшь исходник, можешь мне тоже кинуть?)

    Что бы не возникало проблем, можно либо добавить скачивание файлов в клиент игрока , либо уменьшить потребляемость ресурсов и скорости, до незаметных. В прочем, можно и то, и то сделать.
     
  7. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    Есть вот такая библиотека http://habrahabr.ru/post/117116/, придется использовать её и нагружать «основной» сервер раздачи, ну и я там немножко шаманить буду, чтоб ресурсы все не сдирались на сидирование. Есть кстати идея впихать в автозапуск сервис/демон, который бы в фоне раздавал данные, а при запуске клиента игры останавливал бы сидирование, но теперь тогда всплывает другой вопрос: как добавиь сервис в автозапуск средствами самой явы, да ещё и убедить пользователя разрешить это сделать?
     
  8. Alexey123

    Alexey123 Старожил Пользователь

    Баллы:
    153
    О, я же совсем забыл написать тогда, хотя хотел. libupnp, вот.
     
  9. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    Upnp через двойной нат не может пролезть (
     
  10. Alexey123

    Alexey123 Старожил Пользователь

    Баллы:
    153
    Через двойной нат никто не пролезет, не?
     
  11. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    Торренты со скайпом же как-то пролазят, хотя...
    Все-равно уже другое решение есть, так что уже без разницы.
     
  12. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ты реально не знаешь что торрент и скайп во многих роутерах сам прописывается?
    И есть такая фишка как пасивный режим.
     
  13. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    А сервис нафиг не нужен. Работающий в фоне лаунчер для поддержки раздач — вполне достаточное решение. Просто спроси разрешения на это у игрока при первом запуске и галочку в настройках.
     
  14. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    Знаю, что через upnp открывают порт.

    Было бы лучше, если сделать сервис и в фоне раздавать, даже если лаунчер не запущен.

    В общем решил использовать библиотеку из 7 поста для начала, а потом по возможности upnp приделаю.
     
  15. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Я про другой аспект. Может быть и лучше, но тогда в самом лаунчере нужно вынести кнопки "остановить сервис", "запустить сервис" и "удалить сервис". Никто не должен чувствовать себя обманутым :)
     
  16. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    Не, я обманывать и не собирался, просто во время установки попросить игрока установить сервис "для повышения скорости скачивания клиента", ну и разумеется галочку\кнопочку в настройках для отключения\удаления сервиса.
     
  17. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Тогда всё путём. Кстати, ещё вариант — ограничение скорости раздачи :)
     
  18. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    Так вот для того и сервис, когда игра не запущена или нагрузка на цп низкая, то раздача идет активно, а если запущена игра, то раздача приостанавливается.
     
  19. Alexey123

    Alexey123 Старожил Пользователь

    Баллы:
    153
    При этом не спрашивая игрока? Такими темпами можно и майнер пихнуть в сервис...
     
  20. Автор темы
    danilko

    danilko Старожил Пользователь

    Баллы:
    103
    :)
    Не ну при установке же спрашивает ставить или нет, да и галочка в настройках... (16 пост)
     

Поделиться этой страницей