LINUX.ORG.RU
ФорумTalks

получение внешнего ip роутера

 ,


0

1

Написал программу, которая получает внешний ip, но я тестировал только на своём роутере. Хочу чтобы кто хочет помочь, запустил программу и написать, сработала ли. Если в сети несколько upnp устройств, то может быть проблема, но если запустить ещё раз, то нормально будет. Я хочу её использовать в android, чтобы когда подключусь в общественной сети, где нибудь в городе, чтобы я знал внешний адрес роутера общественной сети.

https://github.com/xverizex/upnp-ip

libminiupnpc для кого написали

Harald ★★★★★ ()
Ответ на: комментарий от u0atgKIRznY5

Там если чо можно самому либы собирать. Большинство даже без изменений собираются.

a1batross ★★★★★ ()

Жесть быдлокод. Проще это двумя строчками на bash сделать.

fornlr ★★★★★ ()

Я просто оставлю это здесь :)

u@notebook:~> fetch -qo- https://ifconfig.co
88.14.7.40
u@notebook:~>

IPR ★★★★★ ()
Ответ на: комментарий от vaddd

программисты народ работящий :) мучаться с невсегда рабочим upnp вместо того, чтоб пройтись по паре таких сервисов :)

mrdeath ★★★★★ ()
Ответ на: комментарий от mrdeath

Ну я же хочу на android такое сделать. Встроил c++ в android, провёл отладку и оказалось что ниразу не получил правильный ответ от сервера. Вот щас теперь полностью на java пишу, пока в консоли. Как только сделаю, перенесу код в android studio.

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5
string getIpFromUrl (url) {
   HttpGet request = new HttpGet();
   URI website = new URI(url);
   request.setURI(website);
   return httpclient.execute(request).getEntity().getContent();
}

string getIp () {
string ip = getIpFromUrl("eth0.me");
if (ip)
    return ip; 
ip = getIpFromUrl("checkip.dyndns.org");
if (ip) 
    return ip;
return "omg";
}
mrdeath ★★★★★ ()
Последнее исправление: mrdeath (всего исправлений: 2)

«Программу»??

curl "http://ifconfig.me" > ~/bin/my_public_ip_current.txt
смари, программа...

targitaj ★★★★★ ()
Ответ на: комментарий от mrdeath

Эти сервисы тоже могут быть недоступными. Как и DNS для их резолвинга. Чем upnp тут принципиально хуже

Harald ★★★★★ ()
Ответ на: комментарий от Harald

1) замени днс на ip. 2) добавь вместо 2х — 5. 3) upnp никогда почти не включен по дефолту 4) upnp сам по себе ущербен 5) все upnp реализации разные и работают через жопу

mrdeath ★★★★★ ()
Ответ на: комментарий от mrdeath

зато upnp, если он есть, знает глобальный адрес локально, за ним не нужно лезть с запросом в далёкие перди

а ещё ответ от такого сервиса могут подменить злоумышленники :)

Harald ★★★★★ ()
Ответ на: комментарий от mrdeath

Я не подумал что можно также на java получить с сайта. Ну так как у меня мало опыта с java, мне сложно пока придумывать какими функциями пользоваться. Я пока пробую другой способ, обмена данными и поиск нужных данных в сетевом ответе. Так хоть разбираюсь понемногу.

u0atgKIRznY5 ()
Ответ на: комментарий от mrdeath

вообще, если делать глобально и надёжно, то в таком порядке:

1) перебрать все сетевые интерфейсы, вдруг у нас есть глобальный адрес

2) запросить upnp

3) и как последняя мера, перебрать несколько сервисов и сравнить результаты

и чтоб всё было настраиваемо, отключаемо и с возможностью задать внешний айпи вручную

Harald ★★★★★ ()
Ответ на: комментарий от Harald

перебрать все сетевые интерфейсы, вдруг у нас есть глобальный адрес

А на java такое можно?

u0atgKIRznY5 ()

Всё сделал для android. Пока только функционал получения адреса и всё.

u0atgKIRznY5 ()
Ответ на: комментарий от Harald

Есть доля правды в сказанном, но с большего сегодняшнеиу интерту пофиг, близкие перди или дальние. На сервере ИПшников может быть несколько, упнп может глючить, может быть двойной нат, можно накасячить с определением публичный/приватный ип итд. Одним запросом можно избежать многих тупых багов.

mrdeath ★★★★★ ()
Ответ на: комментарий от mrdeath

Можно ещё трассировку маршрута сделать, чтобы посмотреть весь маршрут внутренних адресов.

u0atgKIRznY5 ()
Ответ на: комментарий от u0atgKIRznY5

еще можно добавить распознование речи с нейросетью :)

mrdeath ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.