Úvod do programovania zásuviek v Pythone

Pri programovaní soketov sa komunikácia uskutočňuje prostredníctvom siete medzi dvoma soketmi (uzly). Server slúži ako port poslucháča, ktorý počúva na konkrétnej IP a klientsky soket sa natiahne do soketu servera kvôli komunikácii. Aby sme mohli pracovať v programovaní soketov, budeme musieť importovať knižnicu soketov, ktorú poskytuje python.

Socket server Python

Soket je koncový bod na odosielanie alebo prijímanie údajov, preto potrebujeme server a program soketu klienta na tento účel. Pre náš ukážkový program budeme hosťovať server a klienta na rovnakom počítači. Môžeme dokonca odosielať a prijímať prostredníctvom serverového kódu. Je potrebné poznamenať, že môžeme mať iba jeden serverový program, zatiaľ čo môžeme mať viac klientskych programov.

Protokol riadenia prenosu (TCP) je predvolený protokol, ktorý je vybraný. TCP je spoľahlivý, pretože pakety, ktoré spadnú do siete, sú detekované a prenášané odosielateľom. TCP tiež zabezpečuje dodávanie údajov v objednávke, tj poradie, v ktorom je odosielateľ odosielaný v podobnom poradí, v akom je načítaný aplikáciou.

server.py

Pozrite sa na program uvedený nižšie: server.py

Riadok 3: Socket je predinštalovaná knižnica a pre tento bude vytvorený objekt. Tento soketový modul sa importuje do programu python a neskôr sa v ňom použije ako funkcia soketu. Vytvárame tu objekt, ktorý bude nazývať funkciu soketu.

Riadok 4: socket.AF_INET zodpovedá IPV4 (Ak si želáte použiť IPV6, potom je možné použiť socket.AF_INET6. Toto sa týka rodiny soketov. AF_INET určuje protokol, ktorý sa použije na komunikáciu. IPV4 a IPV6 sú rozdielne riadenie prenosu spôsoby alebo protokoly prenosu údajov prostredníctvom siete.

IPV4 a IPV6 sú iba rôzne typy IP adries. Socket.AF_INET zodpovedá TCP. Protokol TCP (Transmission Control Protocol) pracuje s IP a definuje, ako počítač navzájom odosiela dátové pakety.

Ďalej je potrebný protokol TCP, na ktorý potrebujeme soket.SOCK_STREAM, čo je typ soketu. TCP je protokol zameraný na pripojenie, ktorý v podstate zahŕňa uskutočnenie trojsmerného spojenia handshake so serverom a klientom. Potom poskytneme názov hostiteľa, ku ktorému sa klient pripojí.

Riadok 5: Pre názov hostiteľa sa môže použiť „localhost“ alebo „127.0.01“ alebo socket.gethostname (). Získa IP adresu servera.

Vyššie uvedené sú dva parametre, ktoré definujeme pre soket.

Riadok 6: V našom systéme máme zvyčajne veľa portov, takže musíme využiť nepoužívaný hostiteľský port. Môže byť použitá akákoľvek štvorciferná číslica, pretože väčšinou sú obsadené nižšie číslice.

Riadok 7: Metóda bind (), ktorá spája hostiteľa a port so soketom.

Všetky tieto kroky sú potrebné na spustenie nášho servera. Teraz musíme urobiť klienta. Ako už bolo uvedené, môžeme mať viac klientov.

Riadok 8: Máme možnosť uviesť číslo klienta, ktorý môže so serverom komunikovať. To sa dosiahne pomocou s.listen (6). Spustí poslucháč TCP. Číselný údaj predstavuje počet klientov, ktorí môžu interagovať. Ak napríklad príde siedmy klient, bude zrušený.

Riadok 9: s.accept () prijme požiadavku od klienta a vráti dva objekty, jeden je objekt socket-client a druhý je adresa. IP adresa bude adresa klienta, kde je náš klient prítomný.

Riadok 10: Ide skôr o upozornenie servera o vytvorenom pripojení.

Nakoniec vytlačíme príkaz, ktorý by sa mal zobraziť, keď sú oba programy spustené v termináli. Po dokončení nášho serverového programu vypíšeme klientsky program.

Klient soketu Python

Tu diskutujeme o python soketovom klientovi:

client.py

Tu je náš program pre klienta: client.py

Klientsky program má tiež podobný soket, ako vidíme v prípade serverového programu. Klientsky program sa zvyčajne spúšťa zo serverového programu. Nie je to v rovnakom stroji, aký máme v tomto príklade. Čo sa týka zásuviek, máme v úmysle dosiahnuť komunikáciu prostredníctvom programov Python na stroji s lokálnou sieťou alebo dokonca na vzdialených sieťach.

Riadok 8: V serverovom programe existuje metóda bind (), tu sa použije metóda connect (). Tuple tu vezme hostiteľa a port v metóde. Berieme rovnaký port, aký sme použili v našej server.py

Potrebujeme spustiť server.py a client.py v rôznych termináloch a takto uvidíme pripojenie.

Výkon:

Snímka obrazovky je z dvoch rôznych terminálov, z ktorých jeden bol otvorený v CMD a druhý otvorený v prostredí PowerShell vo Windows. V ľavom okne sa otvorí program server.py a terminál na pravej strane otvorí program client.py.

Výstup vidíme vytlačený v termináli na strane servera.

Posiela sa reťazec z jedného súboru do druhého

Pokúsime sa odoslať správu z klienta na server. V programe client.py napíšeme správu.

1. client.py

Tu je náš program pre klienta: client.py

Riadok 9 a Riadok 10: Nastavíme správu do premennej a pošleme správu vo forme bajtov a skonvertujeme ju alebo zašifrujeme vo formáte UTF-8. (UTF je štandard Unicode, pretože všetok obsah správy sú znaky a spadajú pod tabuľku Unicode). Mali by sme kódovať a uchovávať údaje čo najmenšie, inak by prenos v určitom čase zlyhal.

Riadok 11: Ukončujeme spojenie.

V serverovom programe vykonáme nasledujúce zmeny.

2. server.py

Tu je náš program pre server: server.py

Riadok 11: Na vytvorenie spojenia používame klientsky objekt soketu. Veľkosť vyrovnávacej pamäte spomíname pridaním 1024 bajtov (1 KB) k metóde a udržujeme ju v premennej správe.

Riadok 13: Potom tlačíme metódu.

Výkon:

Znovu otvoríme obidve svorky a uvidíme nasledujúci výstup.

Záver - Programovanie zásuviek v Pythone

Tu sú popísané základy programovania soketov, je však potrebné poznamenať, že ide o masívnu doménu av programovaní soketov je veľa ďalších vecí. Pochopenie základných znalostí by pomohlo pri riešení zložitých scenárov klient-server.

Odporúčané články

Toto je sprievodca programovaním zásuviek v Pythone. Tu diskutujeme koncepciu soketového servera python a soketového klienta s implementáciou kódu. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Python vnorené slučky
  2. Top 15 funkcií Pythonu
  3. Top 7 Python IDE pre Windows
  4. Rôzne metódy v sadách Python

Kategórie: