Úvod do programování Socket v Pythonu

V programování soketů je komunikace navázána sítí mezi dvěma sokety (uzly). Server funguje jako port posluchače, který naslouchá na konkrétní IP, a klientská soket se natáhne do soketu serveru pro komunikaci. Abychom mohli pracovat v programování soketů, budeme muset importovat knihovnu soketů, kterou poskytuje python.

Socket Server Python

Soket je koncový bod pro odesílání nebo přijímání dat, proto pro tento účel potřebujeme server a program soketu klienta. V našem ukázkovém programu budeme hostovat server a klienta na stejném počítači. Můžeme dokonce odesílat a přijímat prostřednictvím kódu serveru. Je třeba poznamenat, že můžeme mít jen jeden serverový program, zatímco můžeme mít více klientských programů.

Protokol řízení přenosu (TCP) je výchozí protokol, který je vybrán. TCP je spolehlivý, protože pakety, které spadají do sítě, jsou detekovány a přenášeny odesílatelem. TCP také zajišťuje dodávání dat v pořadí, tj. Pořadí, ve kterém je odesílatelem odesíláno v podobném pořadí, v jakém je aplikace přečte.

server.py

Podívejte se na níže uvedený program: server.py

Řádek 3: Socket je předinstalovaná knihovna a pro tento bude vytvořen objekt. Tento soketový modul je importován do programu python a později bude použit jako funkce soketu. Vytváříme zde objekt, který bude volat funkci soketu.

Řádek 4: socket.AF_INET odpovídá IPV4 (Pokud si přejete použít IPV6, lze použít socket.AF_INET6. To se týká rodiny socketů. AF_INET určuje protokol, který bude použit pro komunikaci. IPV4 a IPV6 jsou různé řízení přenosu způsoby nebo protokoly přenosu dat po síti.

IPV4 a IPV6 jsou jen různé typy IP adres. Socket.AF_INET odpovídá TCP. Protokol TCP (Transmission Control Protocol) pracuje s IP a definuje, jak počítač navzájem odesílá datové pakety.

Další, co je potřeba, je TCP, na které budeme potřebovat socket.SOCK_STREAM, což je typ soketu. TCP je protokol orientovaný na připojení, v podstatě zahrnuje provedení třícestného spojení handshake se serverem a klientem. Poté poskytneme jméno hostitele, ke kterému se klient připojí.

Řádek 5: Pro název hostitele lze použít „localhost“ nebo „127.0.01“ nebo socket.gethostname (). Získá IP adresu serveru.

Výše uvedené jsou dva parametry, které pro soket definujeme.

Řádek 6: V našem systému máme obvykle mnoho portů, takže musíme použít nepoužívaný hostitelský port. Lze použít libovolné čtyřmístné číslo, protože jsou většinou obsazeny nižší číslice.

Řádek 7: Metoda bind (), která váže hostitele a port k soketu.

Všechny tyto kroky jsou nutné pro spuštění našeho serveru. Nyní musíme udělat klienta. Jak již bylo zmíněno, můžeme mít více klientů.

Řádek 8: Máme možnost uvést číslo klienta, který může se serverem komunikovat. Toho je dosaženo pomocí s.listen (6). Spustí posluchače TCP. Číselná hodnota představuje počet klientů, kteří mohou interagovat. Pokud například přijde 7. klient, bude zrušen.

Řádek 9: s.accept () přijme požadavek od klienta a vrací dva objekty, jeden je objekt soket-klient a druhý je adresa. IP adresa bude adresa klienta, kde je náš klient přítomen.

Řádek 10: Jedná se spíše o oznámení serveru o navázaném připojení.

Nakonec vytiskneme příkaz, který by se měl zobrazit, když jsou oba programy spuštěny v terminálu. Po dokončení našeho serverového programu vypíšeme klientský program.

Python Socket Client

Zde diskutujeme o klientovi soketu python:

client.py

Zde je náš program pro klienta: client.py

Klientský program má také podobný soket, jak vidíme v případě serverového programu. Klientský program se obvykle spouští ze serverového programu. Není to ve stejném stroji, jaký máme v tomto příkladu. U soketů chceme dosáhnout komunikace prostřednictvím programů Python na lokálně připojeném počítači nebo dokonce na vzdálených počítačích.

Řádek 8: V serverovém programu existuje metoda bind (), zde se použije metoda connect (). Tuple zde vezme hostitele a port v metodě. Bereme stejný port, jaký jsme použili v naší server.py

Potřebujeme spustit server.py a client.py v různých terminálech a takto uvidíme, že dojde k připojení.

Výstup:

Snímek obrazovky je ze dvou různých terminálů, jeden otevřený v CMD a druhý otevřený v PowerShell ve Windows. V levém okně se otevře program server.py a terminál na pravé straně otevře program client.py.

Výstup vidíme vytištěn v terminálu na straně serveru.

Odesílání řetězce z jednoho souboru do druhého

Pokusíme se odeslat zprávu z klienta na server. V programu client.py napíšeme zprávu.

1. client.py

Zde je náš program pro klienta: client.py

Řádek 9 a řádek 10: Nastavíme zprávu do proměnné a pošleme zprávu ve formě bajtů a převedeme ji nebo kódujeme ve formátu UTF-8. (UTF je standard Unicode, protože veškerý obsah zprávy jsou znaky a spadají pod graf Unicode). Předpokládáme, že kódujeme a udržujeme data co nejmenší, jinak by přenos selhal v určitou dobu.

Linka 11: Ukončíme spojení.

V serverovém programu provedeme následující změny.

2. server.py

Zde je náš program pro server: server.py

Řádek 11: Pro vytvoření spojení využíváme objekt soketu klienta. Zmíníme velikost vyrovnávací paměti přidáním 1024 bajtů (1 KB) do metody a ponecháme ji v proměnné zprávě.

Řádek 13: Poté tiskneme tuto metodu.

Výstup:

Znovu otevřeme oba terminály a uvidíme následující výstup.

Závěr - Programování soketů v Pythonu

Jsou zde popsány základy programování soketů, ale je třeba poznamenat, že se jedná o masivní doménu a v programování soketů je třeba pokrýt mnohem více. Porozumění základům by pomohlo při řešení složitých scénářů klient-server.

Doporučené články

Toto je průvodce programováním Socket v Pythonu. Zde diskutujeme koncept soketového serveru python a soketového klienta s implementací kódu. Další informace naleznete také v následujících článcích -

  1. Python vnořené smyčky
  2. Top 15 funkcí Pythonu
  3. Top 7 Python IDE pro Windows
  4. Různé metody v sadách Python

Kategorie: