Hi,
ich habe vor einen Roboter mit nem Raspberry Pi zu bauen und diesen dann mit der Socket Bibliothek von python über das Internet zu steuern. Als Server will ich nen zweiten Raspberry Pi nutzen der dann im Heimnetzwerk über port forwarding eigentlich auch für die öffendlichkeit erreichbar seinen müsste. Da ich mich aber mit Netzwerkprogrammierung so gut wie gar nicht auskenne hat dies bei den ersten Versuchen nicht funktioniert.
Und daher auch folgende Fragen:
Im Server Script muss man ja den Server an eine IP und einen Port binden, muss das nun die IP des Servers oder die des Routers sein und sollte der Port der gleiche sein den man auch beim port forwarding gewählt hat?
Und Exakt die gleichen Fragen habe ich dann auch beim Client Script: Welche IP und welcher port ?
Es könnte durchaus sein das diese Fragen kommplett dumm sind und überhaupt keinen Sinn machen und dennoch würde ich mich über eine Antwort freuen.
Danke schon mal im Voraus
Hannes
Python Socket Bibliothek
Du musst hier genau unterscheiden zwischen binden (bind Aufruf) und verbinden (connect Aufruf).
Ersteres machen Server. Und können das nur auf die eigenen Netzwerk-Schnittstellen tun. 0.0.0.0 ist die IP für “alles “ in dem Fall. Und da spielt auch der port eine Rolle, und natürlich muss das der gleiche sein, wie der den du weiterleitest im Router. Auf die IP des Routers kannst du dich nicht binden.
Connect kommt im Client zum Einsatz. Und das gibt einen zielport an. Faktisch kannst du auch einen Quell Port angeben. Der ist aber eigentlich irrelevant und es wird vom System einer zugeteilt, der frei ist.
Ersteres machen Server. Und können das nur auf die eigenen Netzwerk-Schnittstellen tun. 0.0.0.0 ist die IP für “alles “ in dem Fall. Und da spielt auch der port eine Rolle, und natürlich muss das der gleiche sein, wie der den du weiterleitest im Router. Auf die IP des Routers kannst du dich nicht binden.
Connect kommt im Client zum Einsatz. Und das gibt einen zielport an. Faktisch kannst du auch einen Quell Port angeben. Der ist aber eigentlich irrelevant und es wird vom System einer zugeteilt, der frei ist.
Socket-Programmierung ist nicht gerade trivial und so ziemlich jedes Beispiel im Internet hat deutliche Schwachstellen.
Es bietet sich an, hier auf bereits bestehende Lösungen zurückzugreifen und einen Webserver auf dem Raspberry Pi zu starten und ein entsprechendes Framework wie Flask zu verwenden.
Es bietet sich an, hier auf bereits bestehende Lösungen zurückzugreifen und einen Webserver auf dem Raspberry Pi zu starten und ein entsprechendes Framework wie Flask zu verwenden.