![]() |
Síťové - LAN - aplikaceVážím si programátorů aplikací pro síť. V DOSu vytvořit takové programy bez přístupu k informacím bylo nemožné. Potom, co se mi dostaly do ruky Delphi 2.0, pokusil jsem se proniknout do tvorby těchto programů v 32bitových operačních systémech od Microsoftu. Po dlouhém přehrabování v helpech jsem zjistil, že síťovou komunikaci mezi dvěma počítači můžeme vytvořit:
Nejvýhodnější jsou asi pro programátora mailsloty. Nevýhoda je, že se jedná o jednosměrnou komunikaci. Na jedné straně je vysílající program, který směřuje zprávy buď určité aplikaci, nějakému počítači nebo celé doméně (Microsoft to přirovnává k vysílání kabelové televize). Vysílání je realizováno jako zápis do souboru, ten ale ve skutečnosti neexistuje. Jméno tohoto souboru, tedy jméno slotu, se určuje následovně:
Velikost předávaných zpráv je omezena (400B pro doménu, jinak max 64kB). Zápis je možné realizovat například následující funkcí:
Příjem dat je realizován opět jako čtení ze souboru. V první řadě se ale musí vytvořit mailslot pro příjem dat:
Proměnná
Parametrem opakovat samozřejmě určíme, jestli má funkce na zprávu čekat
(a vrátit ji ve formě řetězce), nebo jestli má v případě, že vstupní buffer
je prázdný, vrátit prázdný řetězec. Po ukončení komunikace je dobré uzavřít
slot například: Jestliže chceme, aby programy komunikovaly vzájemně, musíme vytvořit dva komunikační kanály pro každý směr zvlášť. Navíc není dobré směrovat zprávy stále všem počítačům na síti. Zajímavé je řešení, kdy si programy při startu vymění svá jména na síti a další zprávy si směrují jen "mezi čtyřma očima", tedy mezi sebou. Není to ale tak jednoduché jak to vypadá, počítače jsou vždy různě rychlé a musí na sebe při výměně informací čekat. Já ve svých programech používám algoritmus, kdy program pošle zprávu, počká na příchozí zprávu a opět vyšle tu samou zprávu. Tento algoritmus vám umožní tvorbu programů, které budou komunikovat sami mezi sebou (jestli chcete tuto procedurku, napište si, já sám jsem jí odlaďoval 14 dní). Pokud jde například o čekání na tah soupeře (a tím i o čekání na data ze slotu), vkládám testování přítomnosti dat do obsluhy události OnIdle objektu Application. Mailsloty jsou velmi jednoduchým způsobem realizace komunikace dvou programů na síti. Výhodou je i to, že můžeme program odlaďovat bez sítě s tím, že spustíme dva programy na jednom počítači (oba sloty mají pak označení \\.\mailsot\jedinečnéjméno). Jestliže si chcete vyzkoušet síťový program komunikující tímto způsobem, pak si stáhněte program Pyramida '97 a otestujte. ![]() |
|