Az UDP kezelése Delphi alatt

Ma egy három részes cikksorozatot szeretnék elkezdeni, mely egy egyszerű, ám mégis praktikus üzenetküldő program készítéséről szól, hiszen a hálózatok egyre fontosabb szerepet töltenek be életünkben.

A szoftver Delphis leírását közlöm, egyrészt, mert szerintem sokan ismerik a Pascalt, így - ha esetleg más nyelvre is tértek át – könnyen megérthetik, és a Kylix segítségével könnyedén átírhatják Linuxra is. A további okok, pedig a fejlesztőrendszer kényelmessége és a Socketek egyszerű kezelhetősége. A program az egyszerűség kedvéért UDP Socketen (foglalaton) keresztül kommunikál.

Miért éppen UDP?

Nos a kérdés jogos, a válasz pedig kézenfekvő: azért, mert az UDP-t könnyű kezelni, ellentétben a TCP/IP-vel. Ott tudniillik viszonylag sok esemény van, és néha trükközni kell egy picit. Az UDP-vel nem ez a helyzet, a végeredmény pedig látványos, és működik.

Persze ennek azért van némi hátulütője: a biztonság. Míg TCP/IP esetén biztosak lehetünk benne, hogy a küldött adat megérkezik a címzetthez, UDP esetén ez már nem olyan biztos – nagy kiterjedésű hálózat (WAN) esetén. Azért ne keseredjünk el, a programot elsősorban kis hálózatra (LAN – Lokális hálózat) tervezzük, elsőre ne akarjuk meghódítani az Internetet!

Még egy kis UDP

UDP: Angolul User Datagram Protocol. Gyorsasága, és egyszerűsége miatt a TCP/IP mellett az egyik legkedveltebb kommunikációs protokoll. Általában valós idejű kommunikációra (kis hálózatok esetén), valós idejű videó, vagy hang lejátszásra (nagy hálózatok esetén is) használják.

Számunkra a Socket Delphiből elérhető legfontosabb paraméterei a következők:

           LocalPort: Az a port, ahol a socket az üzeneteket fogadja.

           RemotePort: Az a port, ahol a socket az üzeneteket küldi.

           LocalHost: A célszámítógép IP címét tartalmazza. (a hálózaton belüli egyedi azonosító, mindenkinek van és mindenkié különbözik a többiekétől)

E három lehetőséget még ennél is tovább egyszerűsíthetjük, ha a LocalPortot és a RemotePortot ugyanarra állítjuk, igaz, ezzel végképp feladtuk a biztonságot, hiszen így még az is előfordulhat, hogy éppen abban a pillanatban küldünk el valamit, amikor adat érkezik, azon kívül, hogy például egyszerre két adat is érkezhet (ez az alapprobléma). A portszám 1025 és 32767 közti érték legyen, ha lehet, mert elvileg 1024-ig foglaltak lehetnek a portok az operációs rendszer számára (bár mikor írtam a programot direkt a 80-ast használtam, és működött…).

Bármily furcsa is, eseményei közül nekünk csak az OnDataReceived (adat érkezése) eseményre lesz szükségünk, függvényei közül a SendBuffer és a GetBuffer lesznek az izgalmasak.

Mivel egy kicsit kevés a helyem, megpróbálom röviden, de érthetően közölni a lépéseket. Fenti okokból kifolyólag, kénytelen vagyok egy kis jártasságot feltételezni a Delphi területén, ha BÁRMILYEN problémájuk van a Kedves Olvasóknak, kérlek, írjanak!!!

Először is olyan Delphire lesz szükségünk, mely tartalmazza a FastNet csoportot, azon belül pedig a NMUDP komponenst, valamint egy File/New/Application parancsra. Ha jól tudom, akkor előbbi a 4-es verziótól része a fejlesztőkörnyezetnek!

Szóval röviden: mik is kellenek egy ilyen programhoz?

A legfontosabb ugyebár maga az UDP SocketNMUDP – ez megvan. Kell egy-egy Memo a beérkezett és a küldött üzeneteknek. Egy-egy EditBox a címzett IP címének, (legalább) a RemotePortnak és a küldendő szövegnek, valamint egy „Küld” gomb sem árt, ha van. Ezzel egy teljesen alap üzenetküldő program minden egyes komponense a formunkon van.

Az ínyenceknek megsúgom, hogy szükség lehet egy újabb Memora a naplózáshoz (ki jelentkezett be, illetve ki), egy ListBoxra az elérhető partnereknek kilistázásához, egy EditBox-ra a direkt üzenet küldéséhez (a következő számban kitérek erre is), valamint még egy gombra a „Szonár”-hoz (szintén későbbi téma).

Továbbiakban a plusz (ínyenc) részekre csak futólag térek ki, az alapokat szeretném megosztani (valamint az általam írt programot, még egy-két ötlettel – keressék a CD mellékleten!).

Nos erre a hónapra sajna csak ennyi fért bele, de, hogy nehogy ellustuljanak az Olvasók, a következő számig házi feladatot is adok: Tervezzék meg a form kinézetét, és nézegessék a komponensekkel kapcsolatos függvényeket, hogy minden simán menjen. Most már lassan beleélhetik magukat: nemsokára saját „chat” programunk lesz!

Gamf Antal