Python Networking

Python Networking
Python to język na wysokim poziomie specjalnie zaprojektowany, aby ułatwić życie programistom. Z drugiej strony programowanie sieciowe może być żmudnym i skomplikowanym zadaniem w innych językach programowania, ale jest proste i łatwe w języku programowania Python. Umożliwia użytkownikowi pisanie skryptów, które mogą zautomatyzować złożoną konfigurację sieci. W tym artykule zobaczymy, jak wykonać programowanie sieciowe za pomocą Pythona.

Jak Python jest używany w sieciach?

Język programowania Pythona odgrywa istotną rolę w programowaniu sieciowym. Python ma wbudowaną standardową bibliotekę, która zapewnia pełną obsługę kodowania i dekodowania danych, protokołów sieciowych i wszystkich innych koncepcji sieciowych. Pisanie kodów do programowania sieci w Python jest o wiele łatwiejsze niż w C ++ lub Java. Język programowania Python zapewnia dwa poziomy dostępu do usług sieciowych: dostęp na niskim poziomie i wysokim poziomie. Dostęp niskiego poziomu oferuje podstawowe obsługę gniazda systemu operacyjnego. Podczas gdy dostęp na wysokim poziomie umożliwia protokoły implementacyjne, takie jak FTP. HTTP itp.

Ten artykuł pomoże ci w podstawowym zrozumieniu najsłynniejszej koncepcji sieci w Python, która jest programowaniem gniazdem.

Co to są gniazda?

Gniazda zapewniają dwukierunkowy kanał komunikacyjny między dwoma punktami końcowymi. Procesy na innych maszynach, procesy na tej samej maszynie i gniazdo udaje się komunikować ze wszystkimi. Można je zaimplementować na różnych kanałach, takich jak UDP, TCP, gniazda domeny unix itp. Biblioteka gniazd w Python zapewnia różne klasy do zarządzania wspólnym transferem danych lub ogólnego interfejsu do zarządzania resztą. Gniazda używają różnych rodzajów protokołów, aby określić połączenie portu do portu między serwerami a klientami. Te protokoły są używane do FTP, SMTP, e -mail, adresu IP, DNS itp. Słownictwo gniazd jest inne. Spójrz na następującą ilustrację:

Termin Opis
Domena Zestaw protokołów używanych jako mechanizm transportu.
Typ Definiuje rodzaj komunikacji między gniazdami.
Protokół Określa rodzaj protokołu w ramach typu i domeny.
Port Punkt słuchania, w którym serwery słuchają, jak klienta wywołują. Składa się z nazwy usługi, ciągu zawierającego numer portu i numer portu FixNum.
Nazwa hosta Identyfikuje interfejs sieciowy i polega na następujących rzeczach:

Ciąg „”, który identyfikuje adres transmisji.

Ciąg zerowej długości.

Ciąg, który zawiera nazwę hosta, adres podwójnego kwadu lub adres IPv6.

Liczba całkowita, która definiuje adres binarny w kolejności bajt hosta.

Co to jest programowanie gniazda?

Programowanie gniazda łączy dwa węzły w sieci komunikacji. Jeden węzeł to słuchacz, który jest powszechnie znany jako serwer, a drugi dociera do serwera, który jest powszechnie znany jako klient. Do programowania gniazda w Python moduł gniazda musi być uwzględniony.

Zbadajmy kilka przykładów, aby dowiedzieć się, jak wdrażać programowanie sieciowe w Python.

Przykład 1:

W tym przykładzie poznamy składnię modułu gniazda i sposób zaimportowania go do programu Python. Najpierw importujemy moduł gniazda w programie Python za pomocą instrukcji „Gniazdo importu”. Następnie możemy użyć funkcji modułów gniazda. Oto składnia modułu Socket ():

Gniazdo importu
SocketModule = gniazdo.gniazdo (gniazdo.AF_INET, gniazdo.Sock_stream)
Drukuj (SocketModule)

Teraz wykonajmy instrukcję, aby zobaczyć, co wraca:

Oto następujące dane wyjściowe:

Przykład 2:

Teraz nauczmy się tworzyć prosty serwer i prosty klient i zobaczmy, jak się ze sobą komunikują.

Oto kodowanie po stronie serwera:

Najpierw zaimportuj gniazdo, a następnie utwórz obiekt gniazda:

Importuj gniazdo jako s
SocketModule = gniazdo.gniazdo elektryczne()

Uzyskaj nazwę maszyny, wywołując instrukcję GethostName ():

nazwa hosta = gniazdo.Gethostname ()

Podaj numer portu, który chcesz, aby serwer nawiązał połączenie między serwerem a klientem:

Portnum = 12345

Teraz powiązaj host z portem, aby rozpocząć połączenie:

S.bind ((nazwa hosta, portnum))

Następnym krokiem jest czekanie na połączenie klienta:

SocketModule.Słuchaj (5)

Na koniec nawiązaj połączenie z klientem:

Choć prawda:
a, ADR = s.zaakceptować()
druk („połączenie otrzymane od”, ADR)
A.Wyślij (B'thanks do łączenia ”)
A.zamknąć()

Poniżej znajduje się kodowanie po stronie klienta:

Aby rozpocząć połączenie, moduł gniazda musi zostać zaimportowany po stronie klienta, tak jak został zaimportowany po stronie serwera:

Importuj gniazdo jako s
SocketModule = gniazdo.gniazdo elektryczne()

Postępuj zgodnie z tym samym procesem, uzyskaj nazwę komputera lokalnego i zarezerwuj port zarezerwowany przez serwer w celu ustalenia połączenia:

nazwa hosta = gniazdo.Gethostname ()
Portnum = 12345

Teraz podłącz host z portem i nawiązaj połączenie między nimi:

SocketModule.Connect (('127.0.0.1 ', portnum))
Drukuj (SocketModule.recv (1024))
S.zamknąć()

Po zakończeniu kodowania zarówno klienta i serwera, uruchom zarówno serwer, jak i klient w tle, aby zobaczyć wyniki:

Po udanym połączeniu zobaczysz następujące dane wyjściowe:

Przykład 3:

Zobaczmy kolejny przykład, aby lepiej zrozumieć, w jaki sposób serwer łączy się z klientem, a także jak serwer słucha klienta.

Oto kodowanie po stronie serwera:

W przypadku kodowania po stronie serwera postępuj zgodnie z tym samym procesem. Zaimportuj gniazdo, utwórz moduł gniazda, zarezerwuj numer portu, powiązaj hosta i port oraz wysłuchaj klienta. Jeśli możesz zaobserwować, warunek „jeśli” jest dodawany do pętli, aby sprawdzić określony warunek. Zobacz następujący kod:

Gniazdo importu
Portnum = 60
Ipadrs = '127.0.0.1 '
Bufory = 30
SocketModule = gniazdo.gniazdo (gniazdo.AF_INET, gniazdo.Sock_stream)
SocketModule.bind ((ipadrs, portnum))
SocketModule.Słuchaj (1)
Conn, ADRS = SocketModule.zaakceptować()
Drukuj („Adres połączenia to:”, ADR)
Choć prawda:
data = conn.Recv (bufory)
Jeśli nie dane:
przerwa
Drukuj („otrzymane dane to:”, dane)
kon.Prześlij dane)
kon.zamknąć()

Poniżej znajduje się kodowanie po stronie klienta:

Proces nawiązywania połączenia po stronie klienta jest ponownie, taki sam. Zaimportuj gniazdo, utwórz moduł gniazda, zarezerwuj numer portu i podłącz port z hostem:

Gniazdo importu
Portnum = 5006
Ipadrs = '127.0.0.1 '
Bufory = 1024
Printmessage = "hi! Jestem wiadomość od klienta."
SocketModule = gniazdo.gniazdo (gniazdo.AF_INET, gniazdo.Sock_stream)
SocketModule.Connect ((ipadrs, portnum))
SocketModule.Wyślij (printmessage)
Data = SocketModule.Recv (bufory)
SocketModule.zamknąć

Teraz zauważ, że klient wysyła wiadomość do serwera - „Cześć! Jestem wiadomość od klienta ”. Ta wiadomość jest odbierana przez serwer i jest drukowana.

Po udanym połączeniu między serwerem a klientem możesz zobaczyć następujące dane wyjściowe:

Wniosek

Jest to podstawowy przegląd programowania gniazda w Python i szybki początek od implementacji. Jest to jednak ogromny temat i zawiera wiele szczegółów ze złożonym kodowaniem. Po przejściu do tych prostych programów będziesz mógł dostać się do głębokości programowania gniazda.