Rezervační systém
Veřejné metody | Chráněné metody | Seznam všech členů
Dokumentace třídy CServerTcp

serverová část TCP komunikace ...

#include <ServerTcp.h>

Diagram dědičnosti pro třídu CServerTcp
CServerConnection CSocketEndpoint CServerHttp

Veřejné metody

 CServerTcp (unsigned uiThreads, const char *pszHost, FnProcess fnProcess, void *pParam)
 konstruktor ...
 
virtual ~CServerTcp ()
 destruktor ...
 
virtual bool Start (void)
 spuštění serveru ...
 
virtual void Stop (void)
 zastavení serveru ...
 
- Veřejné metody dědí se z CServerConnection
 CServerConnection (FnProcess fnProcess, void *pParam)
 konstruktor ...
 
virtual ~CServerConnection ()
 destruktor
 

Chráněné metody

virtual void CmdProcessing (SOCKET hClient)
 komunikace a zpracování příkazu ...
 
- Chráněné metody dědí se z CServerConnection
bool CallProcessing (unsigned *puiResult, CBlob *cCmd)
 vyvolání uživatelské funkce ...
 

Detailní popis

serverová část TCP komunikace

Třída zajišťuje serverovou část komunikace pomocí TCP protokolu. Implementuje rozhraní CServerConnection a pro práci se sokety využívá funcionalitu CSocketEndpoint.

Při aktivování serveru (vyvoláním Start) se vytvoří pracovní vlákno, které nastaví vnitřní soket do naslouchacího stavu a čeká na příchozí spojení. Jakmile se tak stane, vytvoří zpracovatelské vlákno, které si pro toto spojení vytvoří klientský soket, na kterém dále komunikuje, zajišťuje správné volání uživatelské funkce a nakonec spojení uzavře. Pracovní vlákno serveru mezitím může čekat na další příchozí spojení, pro něj vytvořit další zpracovatelské vlákno, atd. Zpracovatelských vláken může pracovat řada paralelně, takže případné delší zpracovávání příkazů neblokuje činnost dalších klientů.

ServerTcp.png
Vlákna při činnosti TCP serveru

Na diagramu je volající vlákno zobrazeno žlutými bloky, pracovní vlákno serveru pak modrými bloky a jeden reprezentant zpracovatelského vlákna barvou oranžovou.

Aplikace může spouštět více instancí TCP serverů, které pracují na různých IP adresách či portech. Jednotlivé instance se navzájem neovlivňují.

Dokumentace konstruktoru a destruktoru

CServerTcp::CServerTcp ( unsigned  uiThreads,
const char *  pszHost,
FnProcess  fnProcess,
void *  pParam 
)

konstruktor

Vytvoření instance vicevláknového TCP serveru.

Parametry
[in]uiThreadsmaximální počet paralelně běžících zpracovatelských vláken
[in]pszHosturčení IP adresy a portu pro naslouchací soket
U serveru je možné naslouchat na všech IP adresách, které má počítač přiděleny a přijímat tak zprávy od všech vzdálených i lokálních klientů. Podporované formáty jsou popsány u CSocketEndpoint::CSocketEndpoint.
[in]fnProcessadresa funkce typu FnProcess pro zpracování příkazů na serveru
[in]pParamlibovolný parametr, který bude předán uživatelské funkci
virtual CServerTcp::~CServerTcp ( )
virtual

destruktor

Čeká na dokončení všech vláken, pak uvolní veškeré alokované zdroje.

Dokumentace k metodám

virtual void CServerTcp::CmdProcessing ( SOCKET  hClient)
protectedvirtual

komunikace a zpracování příkazu

Při příjmu spojení je vytvořen klientský soket. Server následně volá tuto metodu, která musí zajistit příjem zprávy, její zpracování pomocí uživatelské funkce a nakonec odeslání výsledků zpracování dat zpět klentovi.

Parametry
[in]hClientklientský soket získaný při příjmu spojení (accept)

Reimplementováno v CServerHttp.

virtual bool CServerTcp::Start ( void  )
virtual

spuštění serveru

Návratová hodnota
úspěch operace (true, pokud server přešel do aktivního stavu)

Implementuje CServerConnection.

virtual void CServerTcp::Stop ( void  )
virtual

zastavení serveru

Server přestane přijímat zprávy od kompatibilních klientů.

Implementuje CServerConnection.


Dokumentace pro tuto třídu byla generována z následujícího souboru: