Verschiedene "Netzwerkkarten"?

22/03/2008 - 19:41 von Daniel Kruge | Report spam
Hallo NG!

Ich Programmiere gerade auf einer Fritzbox (MIPSel), auf der ein Linux
installiert ist. Nun hat diese Fritzbox unterschiedliche IP-Adressen:

192.168.0.1 (Fritzbox im Internen Netzwerk)
192.168.0.2 (PC #1)
192.168.0.3 (PC #2)
77.179.*.* (externe IP, vom Provider zugewiesen)

Nun würde ich gerne eine Anwendng Programmiert die auf der externen IP
einen TCP listener Socket anlegt bzw. auf einer der anderen IPs.

Wie kann man das am Besten erreichen? Welche Funktionen brauche ich
dafür?



lg, DK
 

Lesen sie die antworten

#1 Jens Hornung
22/03/2008 - 20:08 | Warnen spam
Daniel Kruge wrote:

Ich Programmiere gerade auf einer Fritzbox (MIPSel), auf der ein Linux
installiert ist. Nun hat diese Fritzbox unterschiedliche IP-Adressen:

192.168.0.1 (Fritzbox im Internen Netzwerk)
192.168.0.2 (PC #1)
192.168.0.3 (PC #2)
77.179.*.* (externe IP, vom Provider zugewiesen)

Nun würde ich gerne eine Anwendng Programmiert die auf der externen IP
einen TCP listener Socket anlegt bzw. auf einer der anderen IPs.



Wenn ich dich richtig verstehe, ist die externe IP dynamisch. D.h., die
IP-Adresse muss von deinem Programm ermittelt werden. Das kannst du mit
ioctl() oder netlink-Sockets machen. Ich finde beide Methoden fast
umstàndlicher, als "ip" als Kommando auszuführen und das Ergebnis zu
parsen, was aber zugegebenermaßen doch recht hàsslich ist. Zu ioctl() gibts
in "Unix Network Programming" von Stevens ein Beispiel im Kapitel 17. Auf
der Seite [1] kannst du dir den Source-Code zu dem Buch runter laden. Das
entsprechende Beispiel ist "prifinfo.c" im Ordner "ioctl". Das ist
allerdings durchsetzt mit den Stevens-typischen Wrapper-Funktionen. Wenn du
willst, kann ich dir meine abgewandelte Version zum Abrufen eines
bestimmten Interfaces per Mail schicken.

Gruß, Jens


[1] http://www.unpbook.com/src.html

Ähnliche fragen