Sockets mit Python

» home «

Auf dem Raspberry Pi können Sie mit Sockets arbeiten, um die Kommunikation zwischen IoT Geräten über WLAN, LAN oder Bluetooth zu gewährleisten. Sockets sind die End-to-End Verknüpfung auf LowLevel-Ebene der Hardware.

Es gibt eine ganze Menge Tutorials und YouTube-Videos die sich um die Programmaierung von Sockets mit Python drehen, doch keines davon scheint halbwegs auf dem Raspberry Pi 3 zu funktionieren. Ich habe daher das folgende Coding entwickelt, das auf dem Raspberry Pi 3 funktionsfähig ist.

001  import socket
002
003  HOST = '192.168.0.152'       # IP des Host
004  PORT = 50000                 # Port des Host
005
006  server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
007  server_socket.bind((HOST, PORT))
008  server_socket.listen(5)
009
010  while True:
011      client_socket, address = server_socket.accept()
012      print("Verbindung von:")
013      print(address)
014      client_socket.send(bytes("Willkommen am Server"))
015
016      data = client_socket.recv(1024)
017      print 'Empfaengt: ', repr(data)

Server Socket in Python

Das einfache Serverscript legt ein Socket an und verbindet es mit dem festgelegten Hostnamen des Raspberry Pi auf Port 8080. Im nächsten Schritt nimmt es die Anfragen über den Port in einer Endlosschleife an.

Als nächstes folgt das Script des Client-Sockets, welches die Verbindung zum Server aufbauen wird.

001  import socket
002
003  HOST = '192.168.0.152'    # IP des entfernten Host
004  PORT = 50000              # Port des entfernten Host
005
006  client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
007  client_socket.connect((HOST, PORT))
008  client_socket.send(bytes("Hallo hier ist der Client"))
009
010  data = client_socket.recv(1024)
011  print 'Empfaengt: ', repr(data)
012
013  client_socket.close()

Client Socket in Python

Das Client-Socket baut eine Verbindung zum Serversocket unter der vorgegebenen Adresse und dessen Port auf und sendet einen kurzen byte-Strom im Format UTF-8.

Ergebnis der Socketverbindung der beiden Raspberry Pi

Im Bild oben ist das Ergebnis der Kommunikation über Sockets zu sehen. Der Server (links Raspberry Pi ZeroA) nimmt die Anfrage des Client (rechts Raspberry Pi ZeroB) entgegen und beide senden einen String. Im Übrigen funktioniert diese Verbindung nur dann zwischen zwei Raspberry Pi gut, wenn Sie die beiden Geräte nicht über einen gemeinsamen Windows-Putty und SSH fernsteuern. Jedes Gerät sollte einzeln im WLAN angemeldet sein und keine Verbindung zu einem Windowsrechner unterhalten, dies könnte unter Umständen zu Problemen führen.

Oliver Lohse   •  3.Jan.2021

Navigation


home
Omega 2
ESP32 NodeMCU
Arduino
Raspberry Pi
Python
PHP

Es geht um den heißem Scheiß über den alle reden - IoT (das Internet der Dinge). Doch zunächst der rechtliche Teil auf dieser rein privat betriebenen Webseite.

Die Webseite verwendet keine Cookies oder sonstigen Tracking-Tools, um das Leserverhalten zu speichern.

SocialCounter Raspberry Pi


Mit Hilfe von Python, dem SenseHAT und dem Befehl `requests.get()` aus der Python-Bibliothek ist es möglich, einen Social Counter für Instagram zu realisieren. Das Ergebnis wird als Ticker auf einer 8x8 LED Matrix angezeigt.

Raspberry Pi


Der Raspberry Pi ist ein Einplatinencomputer, der britischen Raspberry Pi Foundation. Er enthält ein Ein-Chip-System (SoC) von Broadcom mit einer Arm-CPU, WLAN, Bluetooth und einen GPIO-Header für den Anschluss externer Elektronik. Der einfach aufgebaute Rechner soll den Erwerb von Programmier- und Hardware-Kenntnissen kostengünstig jeder Altersklasse erleichtern.


© by O.Lohse • Impressumhome