OK1UFC
 
    TCP komunikace server - klient mezi běžícími aplikacemi na různých PC

srpen 2020    

 
    Úvod

1. Cílem článku je ukázat, jak je TCP komunikace mezi dvěma aplikacemi běžícími na různých PC v síti prostá.
2. Druhým cílem bylo ukázat, jak je návrh i realizace takové komunikace pro technika jednoduchá, pokud použije dobré objektově orientované vývojové nástroje. Obě aplikace byly namalovány za několik minut v ProfiLab-Expert.

   Příklad

Jako příklad jsem použil dvě prosté aplikace, které mezi sebou komunikují:

1. Aplikace je dálkově řízený LC/CL tuner, u kterého nastavuje obsluha konfiguraci a hodnoty L a C.
2. Aplikace je Y(t) monitor, který monitoruje a zobrazuje v závislosti na čase, co obsluha tuneru se zařízením dělala.

   Příprava úloh

První aplikaci jsem doplnil o komponenty TCP serveru. TCP servery naslouchají na svých portech. Pokud se k němu připojí (na jeho IP adresu a port) klient, začne přenášet data.
Druhá aplikace byla aplikace Y(t) plotteru, kterou jsem používal k záznamu naměřených veličin. Rovněž jsem ji upravil. Vyhodil jsem komponenty, které mi sloužily k telemetrii a tři vstupy jsem vybavil komponentami TCP klientů, které se umí spojit s naslouchajícími servery na IP adresách a portech v první aplikaci.
Špehování obsluhy může začít. 

   Aplikace č. 1

Jde o obyčejnou aplikaci, která ovládá po virtuálním sériovém portu dálkově řízený krátkovlnný tuner. Aplikace vypadá takto:
 

  
Abychom mohli špehovat z jiného počítače, co dělá obsluha s ovládacími prvky, doplníli jsme aplikaci o tři TCP servery, které běží na IP adrese desktopu a na portech 8899, 8890 a 8891. Celé schéma aplikace tuneru je zde. Jedná se opravdu o schéma celého dálkově řízeného zažízení, které jsem schopen nakreslit a oživit asi za půl hodiny. V pravé části jsem přikreslil tři TCP servery a nakonfiguroval jsem je. Obsluha nemá tušení, že bude takto jednoduchým opatřením špehována.
 

 
TCP servery musíme nakonfigurovat, aby fungovaly a komunikovaly s klienty na jiném počítači. Konfigurace je prostá, nastaveuje se režim (server) port TCP, IP adresa, případně další detaily (kanál, druh signálu,....):

 
A to je vše. Program zkompilujeme, odneseme na počítač, kde tuner poběží a počkáme, až ho obsluha pustí.

   Aplikace č. 2

Je rovněž obyčejná aplikace, která využívá zapouzdřeného objektu Y(t) Plotter. Ten umožňuje na několika kanálech zaznamenávat průběhy analogových hodnot tak, jak se hodnoty mění v čase. Umí celou řadu dalších užitečných funkcí (např. tisk, kopírování, ukládání dat, ...), ale to není předmětem dnešního článku. Obrazovka po nějakém čase od spuštění vypadá takto:
 

 
   Co jsme vyšpehovali?

V horní části nám již několik sekund "jede" virtuální papír zapisovače. V sekundě 0 byl spuštěn na vzdáleném počítači tuner. To jsem poznal podle toho, že začaly zeleně svítit LED diody všech 3 špehovaných kanálů. Po zapnutí tuner běžel s naposledy nastavenými hodnotami (pamatuje si je). Potom (asi 20 sekunda) obsluha zahejbala s indukčností (červená čára), vrátila prvek zpět, zahejbala s kapacitou a taky přepnula konfiguraci CL-LC (asi v 45 sekundě) a po déle než jedné minutě ji vrátila zpátky. Předtím také hejbala s kapacitou, a to až k hodnotě 2000 pF. Přibližně v jedné minutě a 15 sekundách vrátila kapacitu a indukčnost na hodnoty kolem 600 pF a 380 mikroH. Někdy mezi 2min. 30sec. a 3min.15 sekundami obsluha již jen jemně ladila L a C, s přepínačem konfigurace nehejbala.
K funkci špehování obsluhy tuneru není co dodat.

Celé schéma špehovacího monitoru je zde:
 

 

 
Samozřejmě, že klienty TCP musíme správně nastavit, tj. nastavit režim Client, nastavit stejný port TCP, který jsme použili na serveru špehovaného tuneru a taky musíme nastavit IP adresu stroje, kde nám aplikace tuneru se servery TCP běží (aplikace z úlohy č. 1). 

   Závěr

Pokud píšeme (v uvedených příkladech jsme kreslili) aplikace v moderních vývojových prostředcích, které jsou od toho, pak ani TCP komunikace mezi aplikacemi, které běží na různých PC nemusí být pro nás noční můrou, ale krátkou a elegantní zábavou. O psaní takových aplikací napíšu ještě několik dalších článků.

 

   TU 73, Mira, ok1ufc