Server-Client TCP Parte Seconda
# Creazione CLIENT SOCKET:
--------------------------------
# 1 - Creazione socket # socket.socket()
# 2 - Connessione al Server # connect(indirizzo)
# 3 - Invio di una Richiesta al Server # send()
# 4 - Ricezione della Risposta dal Server # recv()
Mentre le funzioni specifiche per il lato server sono:
# Creazione SERVER SOCKET:
--------------------------------
# 1 - Creazione socket # socket.socket()
# 2 - Collegamento del socket all'indirizzo della macchina e alla Porta Designata # bind()
# 3 - Messa in ascolto in attesa della connessione del Client # listen()
# 4 - Accettazione del Client # accept()
# 5 - Ricezione Richiesta dal Client # recv()
# 4 - Elaborazione di una Risposta # subprocess()
# 5 - Invio Risposta al Client # send()
Di seguito trovate il codice utilizzato nello script sub_server, vi invito a guardare il video per commenti e spiegazioni al riguardo!
import socket
import subprocess
def ricevi_comandi(conn):
while True:
richiesta = conn.recv(4096)
risposta = subprocess.run(richiesta.decode(), shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
data = risposta.stdout + risposta.stderr
conn.sendall(data)
def sub_server(indirizzo, backlog=1):
try:
s = socket.socket()
s.bind(indirizzo)
s.listen(backlog)
print("Server Inizializzato. In ascolto...")
except socket.error as errore:
print(f"Qualcosa è andato storto... \n{errore}")
print(f"Sto tentando di reinizializzare il server...")
sub_server(indirizzo, backlog=1)
conn, indirizzo_client = s.accept() #conn = socket_client
print(f"Connessione Server - Client Stabilita: {indirizzo_client}")
ricevi_comandi(conn)
if __name__ == '__main__':
sub_server(("", 20000))
Come Inviare eMail con Python
I Decoratori
Il Modulo ArgParse - Pt. 1
Il Modulo ArgParse - Pt. 2
Il Modulo Socket - Introduzione
L'Istruzione with
List Comprehension
Parametri da riga di comando: SYS.ARGV
Server-Client TCP Parte Prima
Server-Client TCP Parte Seconda
Subprocess - Pt. 1 - Processi di Sistema
Subprocess - Pt. 2 - STDOUT e STDERR
if __name__ == "__main__"