IP feststellen bei Zugang über Router

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Roman
User
Beiträge: 65
Registriert: Dienstag 14. März 2006, 09:10
Wohnort: Berlin

Hallo,
Ich versuche mich im Moment an einem Chat-Server, der dem MSN-Messenger von Microsoft nicht ganz unähnlich ist. (Nicht, weil ich denke, ich könnte es besser machen, sondern um ein wenig mehr über Netzwerkprogrammierung zu erfahren :) )

Ich wollte auch Dateien zwischen den Clients übertragen können. Bei MSN weiß ich, dass dies über eine direkte Verbindung der beiden Clients funktioniert. (So eine Art P2P)
Mein Problem sind jetzt die IPs, denn in einem LAN ist das noch relativ einfach, diese rauszufinden.
Bei einem Client, der über einen Router ins Netz geht, ist das dagegen sehr viel schwerer...
Wenn ich die IP des Clients hole, bekomme ich ja nur die "lokale" IP im LAN und nicht die des Routers von außerhalb.
Gibt es eine Möglichkeit, diese IP rauszufinden ?

EDIT: Ich nutze WinXP und brauche das Ganze nicht plattformunabhängig.

Für alle Antworten wäre ich sehr dankbar,
Bis dann,
Roman
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Man könnte http://checkip.dyndns.org/ oder so aufrufen und die Antwort auslesen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Man könnte aber auch seine aktuelle IP von der Gegensetelle anfordern.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Leonidas hat geschrieben:Man könnte aber auch seine aktuelle IP von der Gegensetelle anfordern.
Und woher soll die Gegenstelle seine eigene IP kennen? ;-)

Ich finde einen (eigenen) Server am Besten, den kann man nach der IP Fragen, und der kann bei Clienten, die wegen Firewall keine direkte Verbindung hin bekommen, miteinander verbinden.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Man könnte auch ein traceroute/tracepath machen...

Oder man fragt die IP direkt vom router ab. Die haben ja meist eine http Status Seite auf der die IP steht.

Wenn man selber WebSpace hat, könnte man da ein mini Skript plazieren, welches die IP anzeigt:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os, cgitb
cgitb.enable()

print "Content-Type: text/html;charset=utf-8\n"
print os.environ["REMOTE_ADDR"]
Es würde aber auch mit einem einfachem SSI gehen:

Code: Alles auswählen

<!--#echo var="REMOTE_ADDR" -->
Ob Skript oder SSI, es könnte ein proxy zwischenfummeln ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sr4l hat geschrieben:
Leonidas hat geschrieben:Man könnte aber auch seine aktuelle IP von der Gegensetelle anfordern.
Und woher soll die Gegenstelle seine eigene IP kennen? ;-)
Die Idee ist die folgende: User kommunizieren normalerweise über den Server (ist bei Jabber so, ist bei IRC so) und dieser Server kennt die IPs der User. Um nun eine direkte Verbindung zu ermöglichen (etwa wie DCC im Fall von IRC), fragt man beim Server seine eigene IP ab und schon hat man die.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Leonidas hat geschrieben:
Sr4l hat geschrieben:
Leonidas hat geschrieben:Man könnte aber auch seine aktuelle IP von der Gegensetelle anfordern.
Und woher soll die Gegenstelle seine eigene IP kennen? ;-)
Die Idee ist die folgende: User kommunizieren normalerweise über den Server (ist bei Jabber so, ist bei IRC so) und dieser Server kennt die IPs der User. Um nun eine direkte Verbindung zu ermöglichen (etwa wie DCC im Fall von IRC), fragt man beim Server seine eigene IP ab und schon hat man die.
War mir klar, ich konnte mir nur nicht verkneifen. In Zukunft schreibe ich (bitte nicht antworten) dahinter ;-)
Roman
User
Beiträge: 65
Registriert: Dienstag 14. März 2006, 09:10
Wohnort: Berlin

Danke für die vielen Antworten... :D
Leider wollte ich eigentlich kein eigenes Skript auf den Server packen, da das im Moment über FTP und die Domain meiner Eltern funktioniert :D, und die wahrscheinlich lieber keine Experimente auf ihrem Server wollen...
Ist FTP da eigentlich schnell genug, wenn ein etwas größerer Traffic durchgeht, oder ist das mit den ganzen Dateien dann zu viel?
Sonst müsste ich mit tatsächlich noch was anderes überlegen...

EDIT: Oh, irgendwie hatte ich Trundles Antwort völlig übersehen... :roll:
Danke, so werd ich das mal probieren! Hab nämlich grad festgestellt, dass ich meine FritzBox Seite nicht so einfach auslesen kann, weil die Java und XML benutzt.

Die Idee mit der Site des Routers ist natürlich auch eine Möglichkeit, allerdings wird das wohl nicht ganz leicht, die Seite so zu parsen, dass immer die IP richtig rauskommt.

Morgen oder Übermorgen werd ich mich da mal ransetzen, Ergebnisse schreib ich dann hier...

Bis dann,
Roman
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Roman hat geschrieben:Ist FTP da eigentlich schnell genug, wenn ein etwas größerer Traffic durchgeht, oder ist das mit den ganzen Dateien dann zu viel?
:?:
Was willst du denn machen?
  • Den Chat über FTP laufen lassen? Das kannst du vergessen, FTP ist dafür nicht gedacht. Ich würde sogar sagen, FTP ist für gar nichts gut, denn sogar für Datenübertragung ist SFTP besser.
  • Die IP über einen FTP-Server herausfinden? Das kannst du auch vergessen, denn der FTP-Server wird dir nicht deine IP sagen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Roman
User
Beiträge: 65
Registriert: Dienstag 14. März 2006, 09:10
Wohnort: Berlin

Hallo,
Entschuldigt die Verzögerung. Ich war die letzte Zeit nicht zu hause und konnte daher nicht antworten...

Eigentlich hatte ich vor, den Chat über FTP laufen zu lassen, aber es sieht so aus, als müsste ich hierfür wohl ein anderes Protokoll nehmen. :(
Also doch am Server der Eltern rumspielen :D

Danke für eure Antworten und die schnelle Hilfe,
Roman
Antworten