PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Corba+Java: brauche IP als Int


AtTheDriveIn
2008-11-24, 23:39:02
Hi

Ich schreibe gerade einen Corba Chat-Server mit einem C++ Client und einem Java Client. Wählt man Login auf den Clients wird an den Server u.a die IP Adresse übertragen und dort gespeichert.

Die IP ist in der IDL Datei als "unsigned long" definiert. Nun macht aber IDLJ daraus für JAVA einen Int-Wert, IDL dagegen behält für C++ einen long.

Die IP Adresse in C++ rausfinden und als (long) IP an der Server senden ist kein Problem, das klappt auch alles und ich kann chaten. Nur wie geht das in JAVA mit Int?

Ich habe dazu im Internet kein Tutorial gefunden.


String localHost = InetAddress.getLocalHost().getHostName();
InetAddress ia = InetAddress.getByName(localHost);
int ip=Integer.parseInt(ia.getHostAddress());

gibt eine Exception.

Klar ich könnte die IP als String übertragen, aber dann tritt mir mein Professor auf die Füße. :)

Eine andere Möglichkeit das Problem zu umgehen und die Sache in meinen Augen auch eleganter zu lösen wäre es, wenn man die IP des aufrufenden-Clients im Server erfragen würde. Aber dazu habe ich ebenfalls nichts gefunden. Gibt es da was? Bei RPC geht es ja auch...

Edit: Corba Implementation ist "mico 2.3.13" falls das wichtig ist.

ScottManDeath
2008-11-25, 00:17:27
http://java.sun.com/j2se/1.4.2/docs/api/java/net/InetAddress.html#getAddress() und dann die einzelnen bytes als int zusammen bitoperieren

Berni
2008-11-25, 00:30:20
Ich würde ja Inet4Address (bei IPv4) oder Inet6Adress (bei IPv6) verwenden, da InetAdress glaub ich nur nen Null-Pointer liefert wenn du getHostAddress() aufrufst.

Den String kannst du nicht mit parseInt umwandeln, weil da ja Punkte drin sind und du für die Umwandlung ohnehin eine extra Funktion brauchst. Hier ist z.B. eine Funktion enthalten:
http://www.koders.com/java/fidB2379DD0233BDC8AF429EA84C36EBB4814709865.aspx?s=cdef%3Aaccount (IP2Long)

AtTheDriveIn
2008-11-25, 09:44:40
So läuft, danke für die Tips! :)