Sockets/sk

From Free Pascal wiki
Jump to: navigation, search

English (en) español (es) français (fr) slovenčina (sk)

O projekte

Sockets je upravený-LGPL balíček pre Lazarus. Balíček definuje komponent TSocketClient pre pripojenie aplikácií ku všeobecnému serveru socketov cez siete TCP/IP. Archív obsahuje Pascalové súbory komponentu, súbor s balíčkom Lazarus, zdrojové súbory a textové súbory upravenej-LGPL licencie. Tento komponent bol navrhnutý pre aplikácie bežiace na platformách Linux a Win32.

Autor

Antonio d'Avino

Licencia

Upravená LGPL (čítajte COPYING.modifiedLGPL a COPYING.LGPL zahrnuté v balíčku).

Stiahnutie

Posledná stabilná verzia je na stránke Lazarus CCR Files alebo na webovej stránke autora http://infoconsult.homelinux.net.

Prehľad zmien

  • Version 0.2.0 2005/06/01

Roadmap

  • Implementácia asynchrónneho režimu v operáciách zápisu.
  • Pridanie triedy TSocketServer do balíčka.

Závislosti / Systémové požiadavky

  • Lazarus 0.9.6 (FPC 1.9.8)

Stav: Beta

Výsledky: Testované na Windows (Win2K) a Linux (Mdk 10.1).

Inštalácia

  • v adresári lazarus/components, rozbaľte súbory z archívu sockets-laz-package-<version>.tar.gz, bude vytvorený adresár sockets;
  • spusťte Lazarus;
  • otvorte balíček sockets_laz.lpk pomocou Component/Open package file (.lpk)
  • na Compile kliknite, len ak nechcete inštalovať komponent do IDE)
  • kliknite na Install a odpovedzte 'Yes' na otázku o prebudovaní Lazarus, na palete komponentov bude vytvorená nová záložka 'Sockets'.

Poznámka pre Win32: Ak sa vyskytnú nejaké problémy pri kompilácii súborov Pascal, možno potrebujete pridať nasledujúcu cestu: <some-drive>:<some-path>\lazarus\lcl\units\i386\win32 (napr: c:\programs\lazarus\lcl\units\i386\win32) do 'Other unit files ...' v záložke 'Paths' dialógu 'Compiler Options' v okne správcu balíčkov Lazarus.

Použitie

Presuňte komponent TSocketClient na formulár, pre každé rôzne klientské soketové spojenie, ktoré vaša aplikácia potrebuej.

Povinné vlastnosti

  • Host: TCP/IP adresa alebo URL počítača, na ktorom zvolený server socketov beží;
  • Port: TCP/IP port procesu servera, na ktorom počúva;

Voliteľné vlastnosti

  • DosLf: ak je nastavené na 'True', je pri vykonávaní procedúry writeLineLf pred LF (0x0A) vložené CR (0x0D) (see forward).
  • ReadCharsThereshold: počet znakov čitaných z kanála pred vyvolaním udalosti OnReadChars (see forward), pričom 0 je ekvivalentom pre 1.

Teraz možno nastaviť vlastnosť Active na 'True', čím je otvorený kanál. Ak spojenie zlyhá, je vyvolaná výnimka (host nedosiahnuteľný, na porte nepočúva server, sičová chyba).

Spojenie je zatvorené nastavením vlastnosti Active na 'False'. Pre overenie stavu spojenia môžete tiež testovať hodnotu vlastnosti Active (uzatvorenie spojenia serverom nastaví túto vlastnosť na 'False').

Verejné metódy triedy TSocketClient

  • function bufferChars: Integer - vracia počet znakov prijatých od procesu servera cez kanál a dostupných pre čítanie.
  • function getBuffer (var buffer: String): Integer - kopíruje znaky z interného bufera komponentu do reťazcového parametra 'buffer', počet prekopírovaných znakov je vrátený a interný bufer je vyprázdnený.
  • function readLine (var buffer: String): Boolean - znaky v inernom buferi sú prekopírované do reťazcového parametra 'buffer', ale neobsahujú prvý výskyt znaku LF (0x0A9), všetky znaky CR (0x0D) sú zahodené. Ak môže byť prekopírovaný celý riadok, funkcia vracia 'True'. Ak sa nevyskytol žiadny znak LF, je do parametra 'buffer' prekopírovaný celý interný bufer a funkcia vracia 'False'.

Poznámka: zostávajúci obsah interného bufera je dostupný aj po uzatvorení spojenia. Stratený bude len pri opätovnom spustení komponentu.

  • function writeChar (buffer : Char ): ShortInt - zapisuje do kanála jeden znak, vracia 0 pri úspechu alebo hodnotu menšiu ako 0 ak zlyhá.
  • function writeLine (buffer : String): ShortInt - obsah parametra buffer je poslaný na server, vracia 0 pri úspechu alebo hodnotu menšiu ako 0 ak zlyhá.
  • function writeLineLf (buffer : String): ShortInt - rovnaké ako funkcia writeLine, ale na koniec je pripojaný znak LF (0x0A) (pár CR/LF, ak je vlastnosť DOSLf 'True'), vracia 0 pri úspechu alebo hodnotu menšiu ako 0 ak zlyhá.

Poznámka: v tejto dobe, metódy write triedy nie sú asynchrónne, takže môžu blokovať vašu aplikáciu v prípade zlyhania. Toto by malo byť odstránené v ´dalšej verzii.

Udalosti triedy TSocketClient

  • OnBufferFull - udalosť je vyvolaná, pri zaplnení interného bufera. Z kanála nie sú prijímané žiadne ďalšie znaky, pokiaľ nie sú znaky z interného bufera prečítané.
  • OnEndOfLineReceive - udalosť nastáva pri prijatí zanku LF (0x0A) zo servera.
  • OnReadChars - udalosť je vyvolaná keď v internom buferi čaká najmenej ReadCharsThereshold znakov.
  • OnStateChange - udalosť nastáva pri každej zmene hodnoty vlastnosti Active.