Pubblicato il

Come usare e impostare Client-Server import Socket Python Raspberry Pi – Lezione 7

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.