Oczekiwania:
Oto kilka kluczowych punktów z tego artykułu
Ogólny schemat:
System A i B powinien sobie w stanie pingować.
Założenia lub ograniczenia:
Uwaga: możesz sprawdzić referencję w celu wypróbowania wysyłania i odbierania pakietów UDP przez Linux CLI przed pójściem na pliki Python, aby wykonać to samo zadanie.
Pliki Pythona:
Istnieją dwa pliki Pythona serwer.py I klient.py. Plik serwera i plik klienta powinny być obecne odpowiednio w systemie serwera i systemie klienta.
serwer.py
Gniazdo importuKlient.py
Gniazdo importuWyślij/odbieraj pakiet UDP:
Weźmy przykład, jakbyśmy wyśle pakiet UDP z systemu A do systemu B. Tak więc, w koncepcji serwera-klienta, musimy uruchomić serwer po stronie systemu B i klienta po stronie systemu.
Mamy również prawidłowe adresy IP.
System IP: 192.168.1.6Teraz, w przeciwieństwie do wysyłania i odbierania pakietów UDP przez Linux CLI serwer.py w systemie, b [192.168.1.102], a potem będziemy uruchomić klient.py W systemie A [192.168.1.6].
Jak uruchomić serwer.PY w 192 roku.168.1.102?
Oto polecenie uruchamiania serwera.py
$ Python3 Serwer.PY 192.168.1.102 4444Oto zrzut ekranu
Tutaj istnieją dwa argumenty dotyczące programu Python. 1St Argument to adres IP samego serwera, tutaj 192.168.1.102 i 2Nd Argument to port, którego serwer będzie słuchał, tutaj wybraliśmy 4444.
Jak uruchomić klienta.PY w 192 roku.168.1.6?
Oto polecenie uruchomienia klienta.py
$ Python3 Klient.PY 192.168.1.102 4444Oto zrzut ekranu
Tutaj istnieją dwa argumenty dotyczące programu Python. 1St Argument to adres IP serwera, tutaj jego 192.168.1.102 i 2Nd Argument to port, w którym działa serwer. W naszym przykładzie jest to 4444.
Wyślij lub odbieraj SMS:
Teraz, jak widać, jesteśmy gotowi komunikować się między dwoma systemami. Ale najpierw musimy zacząć od klienta. Wpiszmy coś w kliencie i sprawdź, czy sięgnie do serwera, czy nie.
Wyślij dane z klienta: „Jestem z klienta”
Klient z ekranu z ekranu:
Teraz ta wiadomość klienta powinna przyjechać na serwer. Oto zrzut ekranu serwera.
Teraz możemy zobaczyć po stronie serwera, mamy również opcję wysłania czegoś do klienta. Spróbujmy tego.
Wyślij dane z klienta: „Jestem z serwera”
Server Screenshot:
A oto zrzut ekranu po stronie klienta.
Teraz będzie to trwające nieskończone czasy, dopóki nie zatrzymamy programu Python za pomocą Ctrl+C.
Sprawdź pakiet UDP w Wireshark:
Teraz przeprowadziliśmy komunikację, ale jak dowiemy się, że UDP był używany do wysyłania lub odbierania tych pakietów. Możemy więc sprawdzić przechwytywanie w Wireshark.
Zobaczmy pakiet, gdy klient [192.168.1.6] Wysłano dane [„Jestem z klienta”] na serwer [192.168.1.6].
Objaśnienie kodu:
Podstawowe wyjaśnienie kodu Pythona Patrz „Przesyłanie pliku gniazda Pythona” w sekcji referencyjnej.
Wyjaśnimy tylko ważne kody linii dla pliku klienta i serwera Pythona. W kodzie klienta i serwera znajdują się przydatne komentarze.
Objaśnienie kodu klienta:
Jeśli Len (sys.argv) == 3:Powyższa linia jest wymagana do sprawdzenia, czy użytkownik zdał wymagane obowiązkowe argumenty. Albo program wyjdzie. Ten sam czek jest w programie serwerowym.
S = gniazdo.gniazdo (gniazdo.AF_INET, gniazdo.Sock_dgram, 0)Powyższa linia to tworzenie serwera gniazda za pomocą UDP [Sock_dgram] protokół. Ten sam kod jest na serwerze.py.
Choć prawda:Aby uruchomić program w Infinite Loop, dopóki użytkownik nie zrobi Ctrl+C. Ten sam kod jest na serwerze.py.
S.sendTO (send_data.enkoduj ('utf-8'), (ip, port))Wysłać dane do wspomnianych ip I Port numer.
dane, adres = s.recvfrom (4096)Aby odebrać dowolne dane pochodzące z serwera. Ten sam kod jest na serwerze.py.
Objaśnienie kodu serwera:
S.sendTO (send_data.enkoduj („UTF-8”), adres)Wyślij dane na adres klienta.
Wniosek:
Możemy wysyłać lub odbierać dane UDP za pomocą programu Python. Wewnętrznie wykorzystuje mechanizm klienta serwera.
Bibliografia:
Aby zrozumieć TCP: https: // linuxhint.com/tcp_packet_capture_analysis/
Aby zrozumieć UDP: https: // Linuxhint.com/udp_wireshark_analysis/
Wyślij i odbieraj pakiety UDP przez Linux CLI:
https: // linuxhint.com/send_receive_udp_packets_linux_cli/
Przesyłanie pliku gniazda Pythona Wyślij:
https: // linuxhint.com/python_socket_file_transfer_send/