Avatar billede el_fredo Praktikant
26. februar 2003 - 17:44 Der er 15 kommentarer og
1 løsning

Ekstern IP adresse m. Java.Net.InetAddress

Jeg bruger flg. kode i mit program:

import java.net.InetAddress;
...
InetAddress ip;
...
ip = InetAddress.getLocalHost();

På denne måde får jeg serverens IP-adresse returneret, men problemet er, at det er den INTERNE IP-adresse jeg får, og det kan således ikke bruges på min webserver, da eksterne klienter ikke kan få adgang til serveren vha. den interne IP. De skal have den eksterne - den jeg får tildelt statisk af TDC. IpConfig.exe kan fint vise både intern og ekstern IP, men hvilken klasse skal jeg bruge i Java, for at finde den eksterne?
Tak.
Avatar billede arne_v Ekspert
26. februar 2003 - 17:49 #1
Det tror jeg ikke at du kan.

(og jeg tror heller ikke at ipconfig kan vise den)
Avatar billede arne_v Ekspert
26. februar 2003 - 17:51 #2
Begrundelse:

Forestil dig situationen med 2 internet forbindelser, 2 routere/firewalls
som lavet NAT, 2 eksterne IP adresser, 1 server - hvad skal serveren
returnere ? Den eksterne IP afhænger jo af hvad vej connection
er kommet ind.
Avatar billede arne_v Ekspert
26. februar 2003 - 17:52 #3
(og ipconfig ciser ikke ekstern IP hverken på mit arbejde eller
derhjemme, selvom begge er NAT'et)
Avatar billede el_fredo Praktikant
26. februar 2003 - 17:57 #4
Jeg kan godt se den korrekte externe IP gennem IpConfig.exe
Der står "Ethernet adapter Local Area Connection" og nedenunder står der "Autoconfiguration IP address...:169.254.92.251"
Længere nede står der "PPP adapter Boomtown" (min ISP) og herunder "IP address... 80.196.153.73" som er korrekt. Det er den IP adresse jeg har fået tildelt.
Avatar billede el_fredo Praktikant
26. februar 2003 - 17:58 #5
Helt ekstern er den jo heller ikke. Men hvis IPCONFIG kan vise den, er der så muligheder i Java?
Avatar billede arne_v Ekspert
26. februar 2003 - 18:18 #6
Ah. Så din PC har begge IP, fordi din eksterne IP kommer via
Boomtown DHCP.

Har du 2 netkort i maskinen ?
Avatar billede arne_v Ekspert
26. februar 2003 - 18:19 #7
Godt spørgsmål.

Hvad returnerer:
  InetAddress.getAllByName("localhost")
?
Avatar billede el_fredo Praktikant
26. februar 2003 - 18:46 #8
Nej, kun 1 netkort.
Avatar billede el_fredo Praktikant
26. februar 2003 - 18:49 #9
Umiddelbart skriver den bare arrayet ud, hvilket er uforståeligt. Jeg prøver lige at parse...
Avatar billede el_fredo Praktikant
26. februar 2003 - 18:53 #10
Den returnerer "Localhost/127.0.0.1" så det er ikke godt nok...
Avatar billede el_fredo Praktikant
26. februar 2003 - 18:57 #11
Så jeg ved ikke hvad jeg skal gøre. Jeg kan hardcode IP'en ind i min kildekode, men det er jo ikke smukt.
Avatar billede arne_v Ekspert
26. februar 2003 - 20:37 #12
Jeg kan heller ikke komme på nogle gode ideer.

Du kan selvfølgelig udføre en:
  ipconfig > c:\ipconfig.tmp
og så læse den fil.

Men det er altså ikke nogen køn løsning.
Avatar billede arne_v Ekspert
26. februar 2003 - 20:37 #13
Hvis du havde fast IP, så kunne du jo bare definere et navn i hosts
filen der pegede på IP nummeret og slå det op.
Avatar billede arne_v Ekspert
26. februar 2003 - 23:12 #14
Snakker vi om JSP eller Servlets ?

I så fald kan:
  request.getServerName()
muligvis returnere noget brugbart !
Avatar billede el_fredo Praktikant
27. februar 2003 - 11:21 #15
request.getServerName() var lige i øjet! Tak for det. Er der iøvrigt et websted eller en god bog der angiver mulige kommandoer vha. request.XXX? Man kan mange smarte ting, men der er jo ikke en API documentation for JSP så vidt jeg ved...
Avatar billede arne_v Ekspert
27. februar 2003 - 11:26 #16
Jo.

J2EE API Doc (ikke J2SE API Doc !) har ServletRequest og HttpServletRequest
med alle metoderne.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester