Aspettative:
Ecco alcuni punti chiave possono essere appresi da questo articolo
Diagramma di configurazione generale:
Il sistema A e B dovrebbero essere in grado di ping a vicenda.
Ipotesi o limitazioni:
Nota: è possibile controllare il riferimento per provare l'invio e ricevere pacchetti UDP tramite Linux CLI prima di andare per i file Python per svolgere la stessa attività.
File Python:
Ci sono due file Python server.Py E cliente.Py. Il file del server e il file client dovrebbero essere presenti rispettivamente nel sistema server e nel sistema client.
server.Py
Società di importazioneCliente.Py
Società di importazioneInvia/ricevi il pacchetto UDP:
Facciamo un esempio come invieremo il pacchetto UDP dal sistema A al sistema B. Quindi, nel concetto di server-cliente, dobbiamo eseguire il server sul lato del sistema B e il client sul sistema un lato.
Inoltre abbiamo indirizzi IP validi.
Sistema a IP: 192.168.1.6Ora, a differenza di Invia e ricevere pacchetti UDP tramite Linux CLI, eseguiremo server.Py nel sistema, b [192.168.1.102] e poi correremo cliente.Py nel sistema A [192.168.1.6].
Come eseguire il server.Py nel 192.168.1.102?
Ecco il comando per eseguire il server.Py
server $ python3.Py 192.168.1.102 4444Ecco lo screenshot
Qui ci sono due argomenti per il programma Python. 1st L'argomento è l'indirizzo IP del server stesso, qui il suo 192.168.1.102 e 2nd L'argomento è porta quale server ascolterà, qui abbiamo scelto 4444.
Come eseguire il client.Py nel 192.168.1.6?
Ecco il comando per eseguire il client.Py
Cliente $ Python3.Py 192.168.1.102 4444Ecco lo screenshot
Qui ci sono due argomenti per il programma Python. 1st L'argomento è l'indirizzo IP del server, qui è 192.168.1.102 e 2nd L'argomento è la porta in cui il server è in esecuzione. Per il nostro esempio è 4444.
Invia o ricevi un po 'di testo:
Ora, come puoi vedere, siamo pronti a comunicare tra due sistemi. Ma dobbiamo prima iniziare dal cliente. Digitiamo qualcosa nel client e vediamo se arriva al server o no.
Invia dati dal client: "Vengo dal cliente"
Cliente del modulo di screenshot:
Ora questo messaggio client dovrebbe arrivare al server. Ecco lo screenshot del server.
Ora possiamo vedere nel lato server, abbiamo anche la possibilità di inviare qualcosa al client. Proviamolo.
Invia dati dal client: "Vengo dal server"
Screenshot del server:
Ed ecco lo screenshot sul lato client.
Ora questo andrà in tempi infiniti fino a quando non fermeremo il programma Python usando Ctrl+C.
Controlla il pacchetto UDP in Wireshark:
Ora abbiamo fatto qualche comunicazione, ma come facciamo a sapere che UDP è stato usato per inviare o ricevere quei pacchetti. Quindi, possiamo controllare l'acquisizione in Wireshark.
Vediamo il pacchetto quando client [192.168.1.6] hanno inviato dati ["Io dal client"] al server [192.168.1.6].
Spiegazione del codice:
Per il codice Python di base Spiegazione consultare "Python Socket File Transfer Send" nella sezione di riferimento.
Spiegheremo solo i codici delle linee importanti per il file Python client e server. Ci sono commenti utili all'interno del codice client e server.
Spiegazione del codice client:
Se len (sys.argv) == 3:La riga sopra è richiesta per verificare se l'utente ha superato gli argomenti obbligatori richiesti. Altrimenti il programma uscirà. Lo stesso controllo è presente nel programma del server.
S = socket.Socket (presa.Af_inet, socket.Sock_Dgram, 0)La riga sopra è quella di creare Socket Server con UDP [Sock_Dgram] protocollo. Lo stesso codice è presente nel server.Py.
mentre è vero:Per eseguire il programma in un ciclo infinito fino a quando l'utente non esegue Ctrl+C. Lo stesso codice è presente nel server.Py.
S.SENDTO (SEND_DATA.ENCODE ('UTF-8'), (IP, porta))Per inviare dati per menzionato IP E porta numero.
dati, indirizzo = s.RECVFROM (4096)Per ricevere dati provenienti dal server. Lo stesso codice è presente nel server.Py.
Spiegazione del codice del server:
S.SENDTO (SEND_DATA.ENCODE ('UTF-8'), indirizzo)Invia dati all'indirizzo client.
Conclusione:
Possiamo inviare o ricevere dati UDP utilizzando il programma Python. Internamente utilizza il meccanismo del client server.
Riferimenti:
Per capire TCP: https: // linuxhint.com/tcp_packet_capture_analysis/
Per capire UDP: https: // linuxhint.com/udp_wireshark_analysis/
Invia e ricevi i pacchetti UDP tramite Linux CLI:
https: // linuxhint.com/send_receive_udp_packets_linux_cli/
Python Socket File Transfer Invia:
https: // linuxhint.com/python_socket_file_transfer_send/