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.