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

Ваш аккаунт

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

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

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

Socket. Client не может отправить сообщение на Server, запущенном на Android смартфоне, подключённого через 3G.

41K
08 мая 2017 года
dreamlore
23 / / 19.05.2013
Здравствуйте, пишу программку (клиент-сервер) на Android на движке LibGdx. Пример кода взял от сюда: http://www.gamefromscratch.com/post/2014/03/11/LibGDX-Tutorial-10-Basic-networking.aspx . Если запустить приложение на компьютере - сервер работает отлично! принимает сообщения с клиента как с устройств, находящиеся в одной с ним сети, так и с других сетей через интернет. Если запустить эту же программу на Android смартфоне, подключенному к интернету через МТС-овский 3G, то сервер там становится невидимым для других устройств в интернете и не может принять сообщение. Через WiFi по домашней сети смартфон принимает всё отлично. Эта ошибка абсолютно не связана с особенностями движка LibGdx, так как он использует стандартную java.nio. После долгих размышлений, я пришёл к выводу, что ошибка заключается в том, что МТС выступает, как прокси сервер и мой смартфон находится, как-бы, в его подсети. Так как ip адрес смартфон-провайдер у меня, к примеру (100.114.205.225) а провайдер-внешний ip (узнаю на https://2ip.ru/) (178.168.180.149). Соответственно ни по одному из этих адресов, клиент не может подключиться. Вопрос. Можно ли как-то подключиться к этому устройству через сокеты? И, если можно, то как? Даже, если этот способ будет не на базе LibGdx.
7
10 мая 2017 года
@pixo $oft
3.4K / / 20.09.2006
Нужен какой-нибудь мастер-сервер с «белым» IP, либо надо использовать STUN.
41K
10 мая 2017 года
dreamlore
23 / / 19.05.2013
Цитата: @pixo $oft
Нужен какой-нибудь мастер-сервер с «белым» IP, либо надо использовать STUN.

Дело в том, что WiFi и 3G/4G используют NAT, соответственно из-за этого и не видно устройство за пределами локальной сети. Придётся сделать перенаправление трафика через UPnP/DLNA протоколы. Есть такая либа, как Cling, которая работает с этими протоколами. Сейчас нужно только в ней как-то разобраться. Сервер на компе с белым IP запускать нет смысла, по скольку, в отличие от Си на Java, ClientSocket не может принимать сообщения от сервера и работает только на отправку (если мне не изменяет память)

74K
12 мая 2017 года
DenM
3 / / 12.01.2017
Ни UPnP, ни что-либо еще не поможет вам управлять сетью 3G-оператора...
Выше дали верный совет - внешний сервер (как у TeamViewer, например).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог