Toon posts:

[JAVA] Ip adres achterhalen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil mijn ip adres achterhalen in java maar het lukt me helaas nog niet echt.

Ik heb al een topic gevonden op GoT maar daar kwam ik niete helemaal uit. De topic is: [rml][ Java] Je eigen ip adres opvragen[/rml] . En ik heb al op de site van sun gekeken tussen de api maar toch.... |:(

Java:
1
2
3
4
5
6
7
8
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;

// ergens anders in de code staat dit, voor de rest niets wat hier relevant voor is:

JOptionPane.showMessageDialog(null, InetAddress.getLocalHost().getHostAddress().toString());
De error die ik krijg

ChatWin.java:218: unreported exception java.net.UnknownHostException; must be caught or declared to be thrown

JOptionPane.showMessageDialog(null, InetAddress.getLocalHost().getHostAddress().toString());
^
1 error

Wat doe ik fout? Zou vast en zeker heel dom van mij zin maar ik dacht ik vraag toch maar ff op GoT

Verwijderd

die UnknownHostException moet je afvangen... das alles
code:
1
2
3
try{
     jouw code
} catch (UnknownHostException e) {wat je ermee wilt doen}

[ Voor 48% gewijzigd door Verwijderd op 07-05-2003 20:37 ]


Verwijderd

Zet eens een Try ... Catch eromheen ...

Verwijderd

Nou, aangezien de syntax van GetLoalHost luidt;

code:
1
public static InetAddress getLocalHost()  throws UnknownHostException


Zul je de zaak moeten voorzien van een try en catch blok...

Verwijderd

Topicstarter
oké thnx de code werkt nu ik heb het volgende er van gemaakt:

Java:
1
2
3
4
5
6
        // IP adres opvragen
        try {
            JOptionPane.showMessageDialog(null, InetAddress.getLocalHost().getHostAddress().toString());
        } catch(UnknownHostException e) {
            JOptionPane.showMessageDialog(null, e.getMessage());
        }
:*)

Wat try en catch procisies doet is mij nog een beetje een raatsel, ik ben nammelijk nog wel een beginner in Java en ben VB gewent en die eet alle codes wel al barst het van de fouten en daar wordt je een beetje lui van. :z
En ja natuurlijk is de syntax daar wat makkelijker van dus vandaar een nieuwe uitdaging Java!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 22-08 19:41
Snap je nu ook wat je met die try/catch bereikt? Try geeft een blok aan waarin fouten mogen voorkomen, en catch geeft aan dat als er een bepaalde fout wordt 'gethrowed' door een methode, dan moet die code worden aangeroepen. Als je naar de declaratie van GetLocalHost kijkt:
code:
1
public static InetAddress getLocalHost()  throws UnknownHostException


Dan zie je dat er 'throws UnknownHostException' staan. Dan weet je 'hey, die methode kan wel es UnknownHostException throwen als er iets fout gaat, dus moet ik een try/catch blok gebruiken'.

als je het al snapte dan moet je dit maar niet lezen ;)

Verwijderd

Try ... Catch is een error exception handling constructie, waarbij de Exception te vergelijken is met het Error object in VB, waarbij wel gezegd moet worden dat het allemaal iets complexer maar wel degelijker geregeld is binnen Java.

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
eigenlijk is het een soort van ON ERROR GOTO maar een pak geavanceerder... Ach VB en die errors, das lachen :)

trouwesn die GetLocalHost moet je wel met een korreltje zout nemen - die returned alleen het 'eerste' IP adress en als je op een PC zit (zoals ik hier) die gebruik maakt van Internet Connection Sharing dan klopt die helemaal niet. De beste 100% zeker approach is ergens een script op een servertje zetten (PHP, applet, wat ook) die bij elke request gewoon de caller's IP teruggeeft.

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Hmm... Er bestaat helemaal niet zoiets als het "IP adres van een computer". IP adressen worden toegekend aan netwerk interfaces. Je kunt immers meerdere netwerk interfaces per computer hebben. Vandaar dat getLocalHost() mischien niet het IP adres retourneert dat jij verwacht.

Een besturingssysteem met een TCP/IP stack heeft altijd een zgn. local loopback interface. Deze is (vrijwel altijd) gebonden aan 127.0.0.1. Wil je echt de localhost hebben dan zou ik gewoon dit IP adres nemen.

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


Verwijderd

Topicstarter
ari3 schreef op 08 mei 2003 @ 09:42:
Hmm... Er bestaat helemaal niet zoiets als het "IP adres van een computer". IP adressen worden toegekend aan netwerk interfaces. Je kunt immers meerdere netwerk interfaces per computer hebben. Vandaar dat getLocalHost() mischien niet het IP adres retourneert dat jij verwacht.

Een besturingssysteem met een TCP/IP stack heeft altijd een zgn. local loopback interface. Deze is (vrijwel altijd) gebonden aan 127.0.0.1. Wil je echt de localhost hebben dan zou ik gewoon dit IP adres nemen.
Dat klopt als je meerdere NIC's in je pc hebt zitten met allemaal TCP/IP protcol hebben ze allemaal een eigen ip adres. Maar ik wil graag het IP adres hebben waarmee de pc op internet gaat. En ik kan in mijn geval er wel vanuit gaan dat de pc maar één NIC bevat.
Maar wat jij zegt klopt maar daar hoef ik gelukkig geen rekening mee te houden :)

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
Verwijderd schreef op 08 mei 2003 @ 15:21:
[...]
Maar wat jij zegt klopt maar daar hoef ik gelukkig geen rekening mee te houden :)
toch wel: in mijn machine heb ik ook maar 1 NIC en het werkt dus niet - dus gewoon ergens online een IP returnertje maken. Heb hier code voor een servlet versie - mag je gerust hebben...

Verwijderd

Topicstarter
hobbit_be schreef op 08 May 2003 @ 18:14:
[...]
toch wel: in mijn machine heb ik ook maar 1 NIC en het werkt dus niet - dus gewoon ergens online een IP returnertje maken. Heb hier code voor een servlet versie - mag je gerust hebben...
Bij mij werkt de code probleemloos, ik begrijp dat je dan geluk hebt. Ik heb wel intresse in jou code! Misschien kun je die hier posten?

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//standard
import java.io.OutputStream;
import javax.servlet.ServletException;
//servlet.jar
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ooGetMyRealIPServlet
    extends HttpServlet
{
    private void processRequest(HttpServletRequest _request,
                                HttpServletResponse _response)
    {
        try
        {
            String tIP = _request.getRemoteAddr();
            byte[] tIPINUTF8 = tIP.getBytes("UTF-8");
           _response.setContentType("text/plain; charset=UTF-8");
            _response.setContentLength(tIPINUTF8.length);
            OutputStream out = _response.getOutputStream();
            out.write(tIPINUTF8);
            out.flush();
        }
        catch (Exception e)
        {
        }

    }

    protected void doPost(HttpServletRequest _request,
                          HttpServletResponse _response)
        throws ServletException
    {
        processRequest(_request, _response);
    }

    protected void doGet(HttpServletRequest _request,
                         HttpServletResponse _response)
        throws ServletException
    {
        processRequest(_request, _response);
    }
}


package it en deploy.
Pagina: 1