| Při psaní programů TCP
ovladačů si můžeme připojit notebook např. k WiFi ve vlaku nebo k WiFi
na mobilu. A můžeme zkoušet, zda nám napsaný ovladač posílá povely.
Výsledek hned vidíme, jako např. já na stařičkém mininotebooku Asus s
Win10Home (32 bit). Oba spuštěné programy najdeme na Ploše (nemají
ikony) jako PO1 (ovladač) a TCP_listener (naslouchátko):

Výpis programu
Celý
výpis ve formátu pdf lze stáhnout zde.
Celá hračka je založena na importu 3 knihoven. Ve Visual Basicu jsem
pro danou úlohu žádnou nevizuální komponentu neviděl. Importoval jsem
knihovny:
Imports
System.Net.Sockets
Imports System.Net
Imports System.Text
Program používá několika málo procedur:
Procedura Sroluj () sroluje část okna s IP adresou, portem a
tlačítkama, pokud zapneme naslouchání.
Procedura Detekuj_povel () testuje proměnnou povel (řetězec
znaků) a pokud je přijat známý povel (Zap1, Zap2, ..., Vyp1, ...,
Vyp4), tak obarví čtvereček (Label4 až Label7) vod toho.
Na další proceduru, tj. Start_naslouchace ( ) se zaměříme. Tam je na
několika málo řádcích celý algoritmus, který plní funkci, kterou od
programu očekáváme:

Důležité jsou instrukce na spuštění serveru, na
otevření NetworkStreamu, clienta pro akceptaci serveru, instrukce pro
čtení bajtů ze streamu (stream.Read) a cyklus (While End While), který
se provádí tak dlouho, dokud není proměnná i nenulová.
V programu je časovač. Časovač je po spuštění
programu vypnutý. Po vytvoření serveru (tlačítko "Naslouchej!") se
časovač spustí. Je tam proto, aby s každým tiknutím časovače spustil
proceduru Start_naslouchace ().
Proměnné
V programu je použito několik málo proměnných - viz deklarace:

Proměnné tam jsou typu integer (i,
port), string (povel), bytes (matice bajtů). Také jsou tam
deklarace, které jsme v předchozích lekcích neviděli (IPAddress),
TCPListener, NetworkStream. Jde o tzv. deklarace objektů. Objekty jsou
zapouzdřené, nevidíme do nich, ale voláme jejich metoddy, jejichž
výsledky využíváme (čtení ze streamu, vytváření TCP klienta, zde ve
variantě TCPListener, sehnání IP adresy z řetězce (IPAddres.Parse).
Cílem lekce bylo zopakovat si postup imperativního procedurálního
programování a naučit se několik málo krůčků kolem objektového
programování, tj. importu knihoven s objekty a zavoláním několika málo
metod.
Poznámky
1. Já jsem si zvykl zjišťovat IP adresu
na DHCP serveru (doma se vždy kouknu do routeru). No, ve vlaku tohle
nejde. Protože Microsoft je s ergonomií a přehledností na štíru, tak
může být někdy pracnější, najít, kam to zase schovali. Tak, jak nemám
rád příkazový řádek, byl jsem rád, že ve Windows 10 byl. Zadal jsem do
hledátka s lupou příkaz cmd a po otevření příkazového řádku
jsem napsal: IPconfig

Na třetím řádku odspoda je IP adresa
našeho serveru. Také můžeme dát IPconfig /all


Exe soubor a projekt
Má smysl ještě zveřejňovat takto
jednoduché školní příklady? Už umíte trochu dělat s uživatelským
rozhraním, používat vizuální i nevizuální komponety z toolboxu, psát
procedury a několik dalších příkazů, ale také importovat objekty a
využívat jejich metod. Není to až tak málo na to, abyste si napsali
komunikující program, který vám bude něco řídit. Nicméně, ještě u
tohoto školního příkladu uvedu odkazy:
exe soubor
je zde a zdrojový
projekt zde.
Poznámky
1. Pod Wine jsem program spustil. Když
jsem přijal první povel, program ho ještě provedl a potom skončil.
2. Pod Virtual Boxem program fungoval normálně, server naslouchal a
přijímal povely ze sítě:

|