Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Как узнать свой IP?


Автор: unkis 6.10.2005, 23:48
Ребята как узнать свой внешний IP?
При том что компютер подключён через роуте?
мохно ли вообще узнать такое.


Зарания благодарен.

Автор: batigoal 7.10.2005, 07:47
Возможно, это можно как-то сделать через командную строку... Ведь есть же команда, которая выдает все пройденные пакетом IP. А потом отпарсить. Но это, конечно, изврат.

Автор: LSD 7.10.2005, 09:01
http://www.showmyip.com/

Автор: unkis 7.10.2005, 09:46
это всё интересно а посредством java такого сделать нельзя?

Автор: djGri 10.10.2005, 02:12
Если ты подклучен через роутер, у тебя нету внешнего IP, только внутренний
( Такой как 10.х.х.х или 172.15.х.х или 192.168.х.х )

Автор: val 19.10.2005, 14:50
Цитата
это всё интересно а посредством java такого сделать нельзя?


Чисто средствами нельзя. Надо опрашивать какой-нибудь сервер:
Вот примерный код, как это делать:
Код

    public static String tryResolveMyExternalIPAddress() {
        String contents = "";
        HttpURLConnection c = null;
        BufferedReader in = null;
        try {
            // Вызываешь testip.php, который должен создать страничку с твоим 
            // внешним адресом средствами языка PHP. 
            URL u = new java.net.URL("http://www.some-aadress/testip.php");
            c = (HttpURLConnection) u.openConnection();
            c.setDefaultUseCaches(false);
            c.setUseCaches(false);
            c.connect();

            if (c.getResponseCode() != HttpURLConnection.HTTP_OK) {
                System.out.println(c.getResponseMessage());
                return "";
            }

            //Закачиваешь сгенерированную страничку.
            in = new BufferedReader(new InputStreamReader(c.getInputStream()));

            StringBuffer str = new StringBuffer();
            String line;
            while ((line = in.readLine()) != null) {
                str.append(line);
            }
            contents = str.toString();

        } catch (Exception e) {
            e.printStackTrace();
            return "";
        } finally {
            if (in != null) {
                try {
                    in.close();        
                } catch (Exception ign) {}
            }
            if (c != null) {
                c.disconnect();    
            }    
        }
        // Вытаскиваешь из полученной странички твой внешний АйПи.        
        return parseHTMLResults(contents);
    }

Добавлено @ 14:57
Цитата
Если ты подклучен через роутер, у тебя нету внешнего IP, только внутренний


Нет, в любом случае внешний АйПи имеется, просто он такой как и остальных узлов локалки. А роутер просто делает перенаправление входного трафика на необходимый локальный адрес...
Добавлено @ 15:00
Цитата
Возможно, это можно как-то сделать через командную строку... Ведь есть же команда, которая выдает все пройденные пакетом IP. А потом отпарсить. Но это, конечно, изврат.


Можно и через командную строку, но тут тогда будет осуществляться привязка к типу операционной системы, что для Java не очень корректно. Нет, мне кажется, что эта задача решается только через опрос внешнего сервера.

Автор: val 19.10.2005, 19:28
По поводу, как написать скрипт, генерирующий страничку с внешним адресом клиента, запустившим этот скрипт, можно обратиться в соответсвующий раздел форума. На самом деле это очень просто. smile

Автор: unkis 25.10.2005, 19:08
спасибо всем
я таким оброзом и решил эту проблемму

Автор: val 26.10.2005, 11:54
Цитата(unkis @ 25.10.2005, 16:08)
спасибо всем
я таким оброзом и решил эту проблемму


Если что спрашивай, готовы помочь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)