Python Client Socket von einem anderen Netzwerk aus mit einem Server Socket verbinden?
Hallo liebe Community,
ich habe kurzem einen Chat in Python geschrieben, indem ich Sockets benutzt habe. Es gibt einen Client.py und einen Server.py. Man kann den Server an eine IP-Adresse binden und der Client kann per IP-Adresse nach einen Server suchen. Jetzt habe ich aber ein Problem:
Wenn ich versuche den Client von einem anderen Netzwerk aus mit dem Server zu verbinden, findet er ihn nicht! Ich bin relativ unerfahren was Networking angeht. Welche IP-Adresse soll ich wo angeben? Z.B. zu welcher Adresse soll ich meinen Socket Server binden und nach welcher IP-Adresse soll mein Client suchen(IPv4, IPv6, public oder local).
Wie gesagt, ich bin ein ziemlicher Noob in Sachen Networking und im Internet finde ich auch nicht das, was ich brauche. Es wäre sehr toll wenn mich jemand aufklären würde.
LG Sneeek
2 Antworten
Solange du den Server nicht auf bestimmte IPs begrenzen willst, kannst du am Server Socket einfach 0.0.0.0 eintragen, dann hört er auf allen Verbindungen.
Wie du mit dem Client verbindest, hängt vom Netzwerk ab, in welchem der Server ist. Bei einem gemieteten Server sollte es einfach durch die IP des Gerätes selbst möglich sein, eine Verbindung herzustellen. Befindet sich das Gerät dagegen in einem lokalen Netzwerk mit NAT (wie bei einem Heimanschluss), dann musst du zur Verbindung die öffentliche IP des Routers eintragen und an diesem Port Forwarding einrichten.
Die Antwort von FireEraser stimmt nur, wenn Du noch im letzten Jahrhundert lebst.
In der heutigen Zeit lebend, musst Du entweder einen IPv6 oder einen Dualstack-Socket öffnen. Das sollte in der Python-Dokumentation nachlesbar sein.
Demzufolge ist auch die Aussage 0.0.0.0 nicht richtig.
https://serverfault.com/questions/698369/what-is-the-ipv6-equivalent-of-0-0-0-0-0