LINUX.ORG.RU
ФорумTalks

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

 ,


0

1

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

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

Ответ на: комментарий от TheAnonymous

А да? Ну если будет без ошибок работать, то и это сойдёт.

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

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

a1batross ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()

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

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

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

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

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

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