COUDP KNIHOVNA PROTOKOLU UDP. Příručka uživatele a programátora

Podobné dokumenty
LZ77 KNIHOVNA PRO KOMPRESI A DEKOMPRESI DAT POMOCÍ ALGORITMU LZ77. Příručka uživatele a programátora

PCKEYB JEDNOTKA PRO OBSLUHU KLÁVESNICE TYPU PC AT. Příručka uživatele a programátora

udspt10r JEDNOTKA IMPLEMENTUJÍCÍ DISPLEJ VZDÁLENÉ VARIANTY TERMINÁLU TERM10 Příručka uživatele a programátora

uioflex JEDNOTKA PRO KONFIGURACI DESKY IOFLEX01 Příručka uživatele a programátora

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

COIPV4 KNIHOVNA PROTOKOLU IP. Příručka uživatele a programátora

Bitmaps SPRÁVCE BITMAP A POMOCNÉ FUNKCE PRO PRÁCI S BITMAPAMI. Příručka uživatele a programátora

TKeypad KNIHOVNY DEFINIC KLÁVESNIC PRO TERMINÁLY TOUCH. Příručka uživatele a programátora

DiskIO JEDNOTKA PRO PRÁCI S RAM, ROM A FLASH DISKY. Příručka uživatele a programátora

usimt03 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM03 NA PC Příručka uživatele a programátora

uioct01 JEDNOTKA PRO MĚŘENÍ FREKVENCE (OTÁČEK) DESKOU IOCT01 Příručka uživatele a programátora

usimt03r JEDNOTKA PRO SIMULACI VZDÁLENÉ VARIANTY TERMINÁLU TERM03 NA POČÍTAČI PC Příručka uživatele a programátora

6. Transportní vrstva

Vlastnosti podporované transportním protokolem TCP:

uioadda1 JEDNOTKA PRO OVLÁDÁNÍ DESEK IOADDA01, IOADDA02 A IODA01 Příručka uživatele a programátora

usimt01 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM01 NA PC Příručka uživatele a programátora

Identifikátor materiálu: ICT-3-03

upct01 SIMULÁTOR TERMINÁLU TERM01 NA POČÍTAČI PC Příručka uživatele a programátora

ucomm JEDNOTKA ZPROSTŘEDKOVÁVAJÍCÍ SLUŽBY BIOSU KITV40 PRO SÉRIOVOU KOMUNIKACI Příručka uživatele a programátora

usimt10 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM10 NA PC Příručka uživatele a programátora

TEDrv OVLADAČE KLÁVESNICE, MYŠI A DISPLEJE EMULÁTORU TERMINÁLU PRO MS WINDOWS. Příručka uživatele a programátora

uterm03r JEDNOTKA IMPLEMETUJÍCÍ VZDÁLENÝ TERMINÁL TERM03 Příručka uživatele a programátora

Y36PSI Protokolová rodina TCP/IP

Počítačové sítě II. 14. Transportní vrstva: TCP a UDP. Miroslav Spousta, 2005

Protokoly: IP, ARP, RARP, ICMP, IGMP, OSPF

Nastavení konstant regulátoru PID

urtotemp JEDNOTKA PRO PŘEVODY ODPORU ČIDLA NA TEPLOTU Příručka uživatele a programátora

Knihovna EpsnetLib TXV první vydání září 2012 změny vyhrazeny

JAK ČÍST TUTO PREZENTACI

Počítačové sítě Transportní vrstva. Transportní vrstva

Počítačové sítě pro V3.x Teoretická průprava II. Ing. František Kovařík

Analýza aplikačních protokolů

Přednáška 3. Opakovače,směrovače, mosty a síťové brány

3.17 Využívané síťové protokoly

Inovace a zkvalitnění výuky prostřednictvím ICT Počítačové sítě Vrstvový model TCP/IP Ing. Zelinka Pavel

uflx2pos JEDNOTKA PRO PRÁCI S INKREMENTÁLNÍMI ČIDLY V DESCE IOFLEX02 Příručka uživatele a programátora

Počítačové sítě Systém pro přenos souborů protokol FTP

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Software pro grafické terminály TERM10 a TERM03

Počítačové sítě. Lekce 4: Síťová architektura TCP/IP

Technologie počítačových sítí 8. přednáška

4. Síťová vrstva. Síťová vrstva. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme si funkci síťové vrstvy a jednotlivé protokoly.

MODELY POČÍTAČOVÝCH SÍTÍ

metodický list č. 1 Internet protokol, návaznost na nižší vrstvy, směrování

Technologie počítačových sítí 2. přednáška

7. Aplikační vrstva. Aplikační vrstva. Počítačové sítě I. 1 (5) KST/IPS1. Studijní cíl. Představíme si funkci aplikační vrstvy a jednotlivé protokoly.

Popis funkcí a parametrů programu. Reliance External communicator. Verze 1.5.0

G240x128 a G128x64 JEDNOTKY IMPLEMENTUJÍCÍ GRAFICKÉ OPERACE VE VIDEOPAMĚTI. Příručka uživatele a programátora

uaterm JEDNOTKA PRO PRÁCI S ABSTRAKTNÍM TERMINÁLEM Příručka uživatele a programátora

mbank.cz mtransfer Okamžitá notifikace o mtransferu Dokumentace pro externího partnera

Model ISO - OSI. 5 až 7 - uživatelská část, 1 až 3 - síťová část

Úvod Virtuální kanál TCP Datagramová služba UDP URL TCP, UDP, URL. Fakulta elektrotechnická

Přístup k transportní vrstvě z vrstvy aplikační rozhraní služeb služby pro systémové aplikace, služby pro uživatelské aplikace DNS

Protokol TELNET. Schéma funkčních modulů komunikace protokolem TELNET. Telnet klient. login shell. Telnet server TCP/IP.

CCNA 2/10 Další funkce TCP/IP Aleš Mareček Jaroslav Matějíček 1

Komunikační protokoly počítačů a počítačových sítí

Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava. Cvičení 5 POČÍTAČOVÁ OBRANA A ÚTOK - POU

utermchr JEDNOTKA PRO PRÁCI SE ZNAKOVÝM TERMINÁLEM Příručka uživatele a programátora

Protokol UNI pro MORSE

Seminární práce do předmětu: Bezpečnost informačních systémů. téma: IPsec. Vypracoval: Libor Stránský

Knihovna DataBoxLib TXV první vydání prosinec 2010 změny vyhrazeny

Počítačová síť. je skupina počítačů (uzlů), popřípadě periferií, které jsou vzájemně propojeny tak, aby mohly mezi sebou komunikovat.

Protokol S-BUS pro MORSE Popis protokolu

Protokol TELNET. Schéma funkčních modulů komunikace protokolem TELNET. Telnet klient. login shell. Telnet server TCP/IP TCP/IP.

íta ové sít TCP/IP Protocol Family de facto Request for Comments

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Analýza protokolů rodiny TCP/IP, NAT

Transportní vrstva. RNDr. Ing. Vladimir Smotlacha, Ph.D.

SNMP Simple Network Management Protocol

Počítačové sítě Aplikační vrstva Domain Name System (DNS)

HTTP KNIHOVNA PRO IMPLEMENTACI HTTP SERVERU. Příručka uživatele a programátora

LdrLib KNIHOVNY PRO TVORBU ZAVADĚČE (LOADERU) ŘÍDICÍCH APLIKACÍ. Příručka uživatele a programátora

LibVUtils UTILITY PRO BALÍK KNIHOVEN LIBV. Příručka uživatele a programátora

Specifikace rozhraní. Oznamovací povinnost podle zákona č. 307/2013 Sb., ve znění pozdějších předpisů. Martin Falc, SW architekt.

Y36PSI IPv6. Jan Kubr - 7_IPv6 Jan Kubr 1/29

3. Linková vrstva. Linková (spojová) vrstva. Počítačové sítě I. 1 (5) KST/IPS1. Studijní cíl

Počítačové sítě II. 15. Internet protokol verze 6 Miroslav Spousta, 2006

SPINEL. Komunikační protokol. Obecný popis. Verze 1.0

Technologie počítačových komunikací

EXTRAKT z české technické normy

Architektura TCP/IP je v současnosti

Y36SPS Bezpečnostní architektura PS

PŘÍRUČKA SÍŤOVÝCH APLIKACÍ

MiiNePort E1 POPIS NASTAVENÍ. SofCon spol. s r.o. Křenova Praha 6 tel: sofcon@sofcon.cz www:

Internet a zdroje. (ARP, routing) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17. listopadu

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Inovace bakalářského studijního oboru Aplikovaná chemie

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

1 Pro účely této vyhlášky se rozumí a) základnovou stanicí základnová stanice veřejné komunikační sítě,

SIP Session Initiation Protocol

EU-OPVK:VY_32_INOVACE_FIL9 Vojtěch Filip, 2013

SSL Secure Sockets Layer

Počítačové sítě IP multicasting

Y36SPS Bezpečnostní architektura PS

Protokoly přenosu. Maturitní otázka z POS - č. 15. TCP/IP (Transmission Control Protocol/Internet Protocol)

Komunikace AMREG v síti MODBUS TCP

DUM 16 téma: Protokoly vyšších řádů

Počítačové sítě II. 11. IP verze 4, adresy Miroslav Spousta, 2006

KS-VARIOLF Komunikační rozhraní

Transkript:

KNIHOVNA PROTOKOLU UDP Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www: http://www.sofcon.cz Verze dokumentu 1.10

Informace v tomto dokumentu byly pečlivě zkontrolovány a SofCon věří, že jsou spolehlivé, přesto SofCon nenese odpovědnost za případné nepřesnosti nebo nesprávnosti zde uvedených informací. SofCon negarantuje bezchybnost tohoto dokumentu ani programového vybavení, které je v tomto dokumentu popsané. Uživatel přebírá informace z tohoto dokumentu a odpovídající programové vybavení ve stavu, jak byly vytvořeny a sám je povinen provést validaci bezchybnosti produktu, který s použitím zde popsaného programového vybavení vytvořil. SofCon si vyhrazuje právo změny obsahu tohoto dokumentu bez předchozího oznámení a nenese žádnou odpovědnost za důsledky, které z toho mohou vyplynout pro uživatele. Datum vydání: 16.05.2003 Datum posledního uložení dokumentu: 16.05.2003 (Datum vydání a posledního uložení dokumentu musí být stejné) Upozornění: V dokumentu použité názvy výrobků, firem apod. mohou být ochrannými známkami nebo registrovanými ochrannými známkami příslušných vlastníků. Copyright 2003, SofCon spol. s r.o., Petr Černín

Obsah : 1.O dokumentu 5 1.1. Revize dokumentu 5 1.2. Účel dokumentu 5 1.3. Rozsah platnosti 5 1.4. Související dokumenty 5 2.Termíny a definice 5 3.Úvod 6 3.1.1. Účel knihovny CoUDP 6 3.1.2. Protokol UDP 7 3.1.3. Porty 8 4.Konstanty a jednoduché typy 9 4.1. Konstanty 9 4.1.1. Návratové kódy CST_UDP_xxx 9 4.1.2. Identifikátory tříd zařízení DEV_CLASS_xxx 9 4.1.3. Identifikátory řídicích operací IOCTL_UDP_xxx 9 4.1.4. Identifikátory parametrů zařízení COPT_UDP_xxx 9 4.2. Typy 10 4.2.1. Třída TCoUdp 10 4.2.2. Třída TCoUdpMux 10 4.2.3. Struktura TUdpAddress 10 5.Textový konfigurační řetězec 11 6.Poznámky 12 6.1. Inicializace zařízení pomocí CoBind 12 6.2. Navazování spojení pomocí CoConnect 12 6.3. Posílání a příjem dat 12 7.Příklad 13

1. O dokumentu 1.1. Revize dokumentu Verze dokumentu Verze SW Autor Datum vydání 1.00 1.XX Čr První vydání Popis změn 1.10 1.XX Tu 16.05.2003 Úprava dokumentu dle ISO9000 1.2. Účel dokumentu Tento dokument slouží jako popis jednotky implementující protokol UDP. 1.3. Rozsah platnosti Určen pro programátory a uživatele programového vybavení SofCon. 1.4. Související dokumenty Pro čtení tohoto dokumentu je potřeba seznámit se s manuálem CoBase. Popis formátu verze knihovny a souvisejících funkcí je popsán v manuálu LibVer. 2. Termíny a definice Používané termíny a definice jsou popsány v samostatném dokumentu Termíny a definice. file:_v0110 16.05.2003 v1.10 5 / 14

3. Úvod 3.1.1. Účel knihovny CoUDP Knihovna CoUDP implementuje protokol UDP (User Datagram Protocol). Tj. jeden z transportních protokolů architektury TCP/IP zajištující koncový přenos dat mezi dvěma stanicemi. Tento protokol je implementován pomocí zařízení TCoUdp. Z následujícího obrázku je zřejmé umístění transportní vrstvy v rámci TCP/IP architektury. Stručný popis architektury TCP/IP je uveden v dokumentaci ke knihovně CoBase. TCP/IP Aplikační vrstva Transportní vrstva Vrstva mezisíťová Vrstva rozhraní sítě UDP poskytuje nespolehlivou transportní službu pro ty aplikace, které nepožadují zabezpečení přenosu v takovém rozsahu, jako poskytuje např. protokol TCP. UDP neposkytuje spolehlivý koncový přenos dat, nemá fáze navazování a rušení spojení. UDP protokol však na rozdíl od TCP umožňuje vysílání na všeobecnou adresu (broadcast). UDP protokol je implementován pomocí dvou zařízení: UDP zásuvka (zařízení UDP, TCoUdp) UDP multiplexer (zařízení UDPMUX, TCoUdpMux) file:_v0110 16.05.2003 v1.10 6 / 14

UDP UDP UDP UDPMUX IP Nad síťovou vrstvou (IP protokol) je vždy jedno zařízení UDP multiplexer (zařízení UDPMUX). K zařízení UDPMUX je možné připojit libovolný počet UDP zásuvek (zařízení UDP), které jsou charakterizovány číslem portu. Aplikace vždy přistupuje pouze k zařízení UDP, nikdy ne k UDPMUX. Protokol UDP je implementovaný pomocí třídy TCoDevice. V této dokumentaci jsou popsány pouze odlišnosti a speciality protokolu UDP (tedy zařízení UDP a UDPMUX). Ostatní naleznete v dokumentaci ke knihovně CoBase. 3.1.2. Protokol UDP Dalo by se říct, že UDP protokol je v podstatě jednoduchou nadstavbou nad IP protokolem přidávající identifikaci procesů číslem portu. UDP protokol je službou bez spojení, je tedy vhodný např. k transakčnímu zpracování (komunikace typu dotaz - odpověď), kdy by režie spojená s navazováním a závěrem spojení by byla příliš velká. Výhodou UDP protokolu je možnost posílání datagramů na všeobecnou adresu pomocí oběžníku (broadcast). UDP datagram má následující formát datagramu a se vkládá do datové části IP datagramu: 0 16 Zdrojový port Cílový port Délka dat Kontrolní součet Přenášená data Zdrojový port Cílový port Zdrojový port identifikuje proces (aplikační protokol) ve zdrojové stanici. Cílový port identifikuje proces (aplikační protokol) na cílové stanici. file:_v0110 16.05.2003 v1.10 7 / 14

Délka dat Kontrolní součet Přenášená data Délka UDP datagramu (tj. součet délky dat a záhlaví) Obsahuje kontrolní součet záhlaví a dat UDP datagramu. Délka přenášených dat je omezena na 504 bajtů. 3.1.3. Porty Rozhraní mezi transportní a aplikační vrstvou, tj. identifikace aplikačního protokolu, který bude poskytovanou transportní službu používat se označuje číslem portu. Port je abstrakce, kterou využívají protokoly transportní vrstvy k rozlišení konkrétního cílového aplikačního procesu běžícího na daném počítači. Typy portů: Známé porty (well known) se pohybují v rozsahu 0 až 1023 a jsou protokoly pevně dané. Konkrétní hodnoty jsou uvedeny v RFC-1700. Registrované porty v intervalu 1024 až 49151 jsou užívány pro běžné procesy a aplikace. Dynamické nebo soukromé porty se pohybují v rozmezí 49151 až 65535 Při výběru čísla portu UDP zásuvky v rozsahu 0 až 1023, příp. 1024 až 49151 je vhodné se podívat do normy RFC-1700. file:_v0110 16.05.2003 v1.10 8 / 14

4. Konstanty a jednoduché typy 4.1. Konstanty 4.1.1. Návratové kódy CST_UDP_xxx Současná verze knihovny CoUDP nedefinuje žádné vlastní návratové kódy CST_UDP_. 4.1.2. Identifikátory tříd zařízení DEV_CLASS_xxx Třída TCoUdp (protokol UDP) resp. TCoUdpMux (multiplexer protokolu UDP) má přidělen identifikátor DEV_CLASS_UDP resp. DEV_CLASS_UDPMUX. Tyto identifikátory určují zařízení v řetězci při volání funkcí CoIoctl, CoGetOption, CoSetOption apod. Zaregistrované jména tříd pro použití s funkcí CoCreateDevice jsou UDP a UDPMUX. 4.1.3. Identifikátory řídicích operací IOCTL_UDP_xxx Současná verze knihovny CoUDP nedefinuje žádné vlastní identifikátory IOCTL_UDP_xxx. 4.1.4. Identifikátory parametrů zařízení COPT_UDP_xxx Identifikátory s prefixem COPT_ specifikují parametry zařízení ve funkci CoGetOption příp. CoSetOption. Knihovna CoUDP definuje několik nových konstant s prefixem COPT_UDP_: COPT_UDP_LPORT Implicitní UDP port, na kterém bude UDP zařízení přijímat příchozí datagramy a kterým budou označeny datagramy odchozí. Tato hodnota koresponduje s parametrem LPORT v konfiguračním textovém řetězci. Parametr lze měnit v libovolném okamžiku, změna se však projeví až v okamžiku volání metody CoBind (pokud místo adresy uvedeme hodnotu nil) Formát dat: Word Implicitní hodnota: 5000 COPT_UDP_RADDR Implicitní adresa protistanice. Přestože UDP protokol nenavazuje spojení implementuje metodu CoConnect a CoDisconnect (viz. kapitola 6.2). Parametr lze měnit v libovolném okamžiku, změna se však projeví až v okamžiku volání metody CoConnect (pokud na místě parametru AAddress uvedeme místo konkrétní adresy uvedeme hodnotu nil). Formát dat: TUdpAddress Implicitní hodnota: 0.0.0.0:5000 file:_v0110 16.05.2003 v1.10 9 / 14

4.2. Typy 4.2.1. Třída TCoUdp TCoUDP = object( TCoDevice ); Pokud použijeme knihovnu CoUDP (uvedeme ji v seznamu za klíčovým slovem uses), bude tato třída zaregistrovaná v globálním seznamu tříd zařízení pod jménem UDP. Toto jméno lze použít v případě vytváření třídy pomocí funkce CoCreateDevice. Číselný identifikátor třídy pro použití s metodami CoIoctl, CoGetOption, CoSetOption apod. je DEV_CLASS_UDP. 4.2.2. Třída TCoUdpMux TCoUdpMux = object( TCoUdpMux ); Pokud použijeme knihovnu CoUDP (uvedeme ji v seznamu za klíčovým slovem uses), bude tato třída zaregistrovaná v globálním seznamu tříd zařízení pod jménem UDPMUX. Toto jméno lze použít v případě vytváření třídy funkcí CoCreateDevice. Číselný identifikátor třídy je DEV_CLASS_UDPMUX. 4.2.3. Struktura TUdpAddress PUdpAddress = ^TUdpAddress; TUdpAddress = packed record Size : Byte; Address : TIpAddress; Port : Word; Struktura TUdpAddress popisuje adresu na transportní vrstvě pro protokol UDP, která se použije při volání aplikačních metod třídy TCoUdp na místech, kde se vyskytuje typ TCoAddress (tj. v metodách CoSendBufferTo, CoRecvBufferFrom, CoBind a CoConnect). Položka Size udává velikost struktury TUdpAddress. Před použitím struktury se vždy nezapomeňte ujistit, že položka Size obsahuje správnou hodnotu, tedy SizeOf(TUdpAddress). V položce Address je obsažena adresa uzlu, v položce Port je uloženo číslo Portu. file:_v0110 16.05.2003 v1.10 10 / 14

5. Textový konfigurační řetězec Parametry zařízení TCoUDP lze nastavovat pomocí textového konfiguračního řetězce metodami CoSetOptionString. V následujícím seznamu jsou uvedeny všechny povolené identifikátory parametrů: LPORT Implicitní UDP port, který se použije v případě, že se zavolá metoda CoBind bez specifikované adresy. Parametr LPORT lze měnit v kterémkoli okamžiku, změna se však promítne až při volání metody CoBind. Formát dat: číslo Implicitní nastavení: 5000 RADDR Implicitní adresa cílové stanice v případě, že se zavolá metoda CoConnect bez specifikované adresy. Parametr RADDR lze měnit v kterémkoli okamžiku, změna se však promítne až při volání metody CoConnect. Formát dat: text, IP adresa Implicitní nastavení: 0.0.0.0 RPORT Implicitní port na cílové stanici v případě, že se zavolá metoda CoConnect bez specifikované adresy. Parametr RPORT lze měnit v kterémkoli okamžiku, změna se však promítne až při volání metody CoConnect. Formát dat: číslo Implicitní nastavení: 5000 Současná verze zařízení TCoUdpMux nemá žádné parametry a tudíž jí není potřeba konfigurovat pomocí textového konfiguračního řetězce. Příklad: var Sock : PCoDevice;.. Sock^.CoSetOptionString( DEV_CLASS_UDP, LPORT=5001, nil ); file:_v0110 16.05.2003 v1.10 11 / 14

6. Poznámky 6.1. Inicializace zařízení pomocí CoBind Metoda CoBind provede inicializaci instance UDP protokolu a zaregistruje vyžádaný lokální port u zařízení nižší vrstvy (UDP multiplexer). První parametr metody CoBind, tj. AAdress je ukazatel na lokální adresu (strukturu TUdpAddress). Protože, lokální IP adresa je jednoznačně specifikovaná již vrstvou protokolu IP, pouze položky Protocol a Size struktury TUdpAddress musí být vyplněny. Položku Address lze naplnit hodnotu IP_ADDR_ANY. Pokud místo ukazatele na strukturu TUdpAddress předáme hodnotu nil, pak se použije implicitní nastavení lokálního portu podle implicitního nastavení adresy protistanice (viz. COPT_UDP_LPORT nebo parametr konfiguračního textového řetězce LPORT). 6.2. Navazování spojení pomocí CoConnect Protokol UDP neumožňuje navázat spojení mezi dvěma stanicemi. Přesto zařízení UDP implementuje metodu CoConnect. Metoda CoConnect neprovádí navazování spojení, pouze si uloží zadanou adresu protistanice. Uložená adresa protistanice se použije na filtrování příchozích datagramů (jsou přijaty pouze datagramy od stanice se kterou je navázáno spojení ). Po zavolání metody CoConnect lze tedy používat metody CoSendBuffer bez určení adresy cílové stanice a CoRecvBuffer, kdy adresa zdrojové stanice je jednoznačná. První parametr metody CoConnect je ukazatel na adresu protistanice (strukturu TUdpAddress). Struktura TUdpAddress musí mít před voláním metody CoConnect vyplněné všechny položky. Pokud místo ukazatele na strukturu předáme hodnotu nil, pak se použije implicitní nastavení adresy protistanice (viz. COPT_UDP_RADDR, nebo parametr konfiguračního textového řetězce RADDR, RPORT). 6.3. Posílání a příjem dat K posílání a příjmu dat jsou určené metody CoSendBufferTo a CoRecvBufferFrom (příp. CoSendBuffer a CoRecvBuffer v případě navázaného spojení ). K předávání adresy cílové příp. zdrojové adresy je určena struktura TUdpAddress. V případě metod pro odesílání a příjem dat jsou využity všechny položky struktury TUdpAddress. UDP protokol umožňuje posílat data na všeobecnou adresu (broadcast). Všeobecná adresa je 255.255.255.255 (konstanta IP_ADDR_BROADCAST) file:_v0110 16.05.2003 v1.10 12 / 14

7. Příklad Následující příklad ukazuje jak použít UDP zásuvku nad TCP/IP zásobníkem. Ukázkový program přijímá na portu 5000 libovolné datagramy a odesílá je zpět zdrojovým stanicím. uses Crt, CoBase, CoEth01, CoUDP, CoINet; var Status : TCoStatus; Sock : PCoDevice; SrcAddr : TUdpAddress; RecvBuff : array[0..575] of Byte; RecvLen : Word; { Vytvoření TCP/IP zasobniku } { Předpokládá desku IOETH01 na adrese $320 } Status := NetOpenStack( 'ETH01', 'IOBASE=$320', 'IPADDR="192.168.1.200", '' ); if Status <> CST_SUCCESS then WriteLn( 'NetOpenStack() failed: ', CoStatusToStr( Status ) ); Exit; { Vytvoření UDP zásuvky } Status := NetOpenSocket( 'UDP', 'LPORT=5000', '', Sock ); if Status <> CST_SUCCESS then WriteLn( 'NetOpenSocket() failed: ', CoStatusToStr( Status ) ); NetCloseStack( '' ); Exit; { Inicializace UDP zásuvky, lokální adresa je daná konfiguračním řetězcem (port=5000) } Status := Sock^.CoBind( nil, COF_PROPAGATE, nil ); if Status <> CST_SUCCESS then WriteLn( 'CoBind() failed: ', Sock^.CoStatusToStr( Status ) ); NetCloseSocket( Sock ); NetCloseStack( '' ); Exit; repeat { Příjem datagramu, do bufferu RecvBuff } Status := Sock^.CoRecvBufferFrom( @RecvBuff, SizeOf( RecvBuff ), @RecvLen, 0, @SrcAddr, nil ); case Status of CST_SUCCESS: { Odeslání přijatého datagram zpátky odesílateli } file:_v0110 16.05.2003 v1.10 13 / 14

Status := Sock^.CoSendBufferTo( @RecvBuff, RecvLen, 0, @SrcAddr, nil ); if Status <> CST_SUCCESS then WriteLn( 'CoSendBufferTo() failed: ', Sock^.CoStatusToStr( Status ) ); CST_ERR_TIMEOUT: { Chybu Timeout nezobrazujeme jako ostatní chyby } else WriteLn( 'CoRecvBufferFrom() failed: ', Sock^.CoStatusToStr( Status ) ); until Keypressed; { Uvolnění UDP zásuvky } Status := Sock^.CoUnbind( COF_PROPAGATE, nil ); if Status <> CST_SUCCESS then WriteLn( 'CoUnbind() failed: ', Sock^.CoStatusToStr( Status ) ); { Uzavření UDP zásuvky } NetCloseSocket( Sock ); { Uzavreni TCP/IP zasobniku } NetCloseStack( '' ); file:_v0110 16.05.2003 v1.10 14 / 14