Premessa:
Il Socket in Python e come ogni altro linguaggio di programmazione viene genericamente usato per mettere in comunicazione due architetture o meglio dire per i neofiti, nel nostro caso due Raspberry Pi. A tal scopo ci procureremo due Raspberry o una raspberry e un pc con sistema operativo linux o qualsiasi altra distro. Il nostro intento è quello di mostrare due semplici programmi scritti in python che comunicheranno tra di loro pur girando su due “macchine” diverse.
LISTA DEI MATERIALI:
Procedimento
Prima cosa andiamo a installare le nostre distro sulle Raspberry Pi collegghiamo alimentazione cavi ethernet al modem e mettiamo le raspberry pi in rete. Ora una volta fatto ciò possiamo usare SSH per gestire da remoto i raspberry e facilitare il compito senza dover attaccare periferiche come tastiere e mouse alle Rasp.
In una raspberry eseguiremo un programma python che denomineremo Server.py, il suo compito sarà quello di tirar su una connessione o PORTA in ascolto e mentre sull’altra Raspberry Pi un Client.py dove si collegherà al Server e manderà dei “pacchetti” con dentro il contenuto da inviare. Ad esempio se nella Raspberry dove è in esecuzione il client.py creiamo una funzione saluto “Ciao Mondo” il server riceverà la stringa di caratteri e verrà visualizzato nella Raspberry Pi Server.
Sofware necessario
RASPBERRY PI SERVER – Questo è lo script da eseguire nel Raspberry che funge da Server
#!/usr/bin/python from socket import * myHost = '192.168.1.4' myPort = 2000 s = socket(AF_INET, SOCK_STREAM) # create a TCP socket s.bind((myHost, myPort)) # bind it to the server port s.listen(5) # allow 5 simultaneous # pending connections while 1: # wait for next client to connect connection, address = s.accept() # connection is a new socket while 1: data = connection.recv(1024) # receive up to 1K bytes if data: connection.send('echo -> ' + data) print data else: break connection.close() # close socket
RASPBERRY PI CLIENT – Questo è lo script da eseguire nel Raspberry che funge da Client
#!/usr/bin/python import sys from socket import * serverHost = '192.168.1.4' # servername is localhost serverPort = 2000 # use arbitrary port > 1024 s = socket(AF_INET, SOCK_STREAM) # create a TCP socket s.connect((serverHost, serverPort)) # connect to server on the port s.send('Hello world') # send the data data = s.recv(1024) # receive up to 1K bytes print data
Una volta scritti i due script dovrete eseguire prima il server nella raspberry SERVER per lanciare e mettere la porta in ascolto.
serverHost = ‘192.168.1.4’ Troverete questa dicitura nei due programmi l’indirzzo che trovate 192168.1.4 andrà sostituito con quello del vostro raspberry pi SERVER. Quindi da terminale del Raspberry SERVER trovate l’indirizzo ip della rete locale:
sudo ifconfig
Ora sostiuite nei programmi l indirizzo ottenuto.
Eseguite sempre nel SERVER il file Server.py nel nostro caso lo abbiamo messo nella directory /home/pi
cd /home/pi
sudo python Server.py
Ora il nostro server se tutto è andato bene è in ascolto dirigetevi nel secondo Raspberry Pi quello CLIENT
sostituite come sempre nel serveHost l’indirizzo ip del SERVER Raspberry ed eseguite il client.py
da terminale:
cd /home/pi
sudo python Client.py
Ora dovrebbe mostrarvi in tutte e due i terminali la scritta “HELLO WORLD” ciò vuol dire che le deu Raspberry Pi comunicano tra di loro.
Buon Progetto.