Premium

Získejte všechny články
jen za 89 Kč/měsíc

S Palm Piloty na internet snadno a rychle (6)

Dnes si vytvoříme druhý program - program na nalezení IP adresy počítače na internetu.

Funkce k zpracování uživatelem zadané adresy počítače

Vyhodnocujeme-li uživatelem zapsanou adresu v síti internet, je výhodné nejprve zkontrolovat, zda uživatel nezadal v políčku přímo platnou IP adresu. Pokud ano, není potřeba posílat dotaz DNS serverům a pomocí funkce NetLibAddrAToIN() pouze převedeme IP adresu zapsanou v řetězci na její numerickou hodnotu.

Voláme-li funkci NetLibGetHostByName(), musíme zkontrolovat vrácenou hodnotu. Je-li nulová, došlo při hledání IP adresy počítače k chybě. V jednoduchých programech nemusíme vyhodnotit kód chyby - stačí nám vědět, že funkce NetLibGetHostByName() selhala a počítač nebyl nalezen. Píšeme-li složitější program, ve kterém záleží na rozlišení důvodu, zkontrolujeme proměnnou chyba, abychom věděli, proč se hledaný počítač nepovedlo najít (například zda uživatel zavěsil telefon nebo zda je hledaný počítač nedosažitelný).

V případě, že funkce NetLibGetHostByName() vrátí nenulovou hodnotu, přečteme ze struktury NetHostInfoBufType hodnoty IP adres, vrácené oběma nameservery. Příklad kódu je v následujícím rámečku:

static NetIPAddr SitNajdiPocitac(Char* jmeno)
{
    NetIPAddr adresa;
    NetHostInfoPtr HostInfoPtr;
    NetHostInfoBufType HostInfoBuf;
    Err chyba;
    UInt16 i;
    
    // Defenzivní kódování - kontrolujte své chyby ...
	
    if(!gKnihovnaNahrana)
    {
        return -1L;
    }

    adresa = NetLibAddrAToIN(gNetLibReference, jmeno);
    
    if(adresa != -1)
    {
        // V policku byla zadana primo IP adresa
        
        return adresa;
    }
    else
    {
        // V policku bylo zadano jmeno pocitace
        
        HostInfoPtr = NetLibGetHostByName(gNetLibReference,
            jmeno,
            &HostInfoBuf,
            DOBA_CEKANI,
            &chyba);
            
        if(!HostInfoPtr)
        {
            return -1L;
        }
        
        // Prohledame hodnoty vracene obema nameservery

        for(i = 0; i < netDNSMaxAddresses; i++)
        {
            if(HostInfoBuf.address[i] != NULL && HostInfoBuf.address[i] != -1L)
            {
                return HostInfoBuf.address[i];
            }
        }
        
        return -1L;
    }
}

Konstanta netDNSMaxAddresses udává, kolik adres DNS serverů je možné na počítači Palm Pilot zadat v panelu Nastavení. Na všech modelech počítačů Palm Pilot má tato konstanta zatím hodnotu 2. Adresa vrácená prvním DNS serverem je v poli address[0] a adresa vrácená druhým serverem je v poli address[1]. Pokud se DNS serveru nepodařilo počítač vyhledat, je v příslušném prvku pole address hodnota NULL nebo hodnota -1L.

Kódy chyb

Všechny součásti operačního systému počítačů Palm Pilot a kompatibilních používají jednotné číselné kódy chyb, ke kterým může dojít za běhu programu. V naší aplikaci nemusíme ošetřit všechny chyby, které mohou nastat - většinou stačí jen sdělit uživateli, že k chybě došlo. Pokud potřebujeme zobrazit podrobnosti o chybě, můžeme použít funkci SysErrString().

Char* SysErrString(Err chyba, Char *buffer, UInt16 maxDelka)

Vrátí popis chyby.

Vstupní parametry
  • chyba - číslo chyby (vrácená hodnota
  • maxDelka - nejvyšší počet znaků (včetně ukončujícího znaku '\0', který může být uložen do proměnné buffer
Výstupní parametry
  • buffer - ukazatel na řetězec, do kterého bude uložen text
Vrácená hodnota
  • ukazatel na první znak proměnné buffer

Funkce SysErrString() uloží do řetězcové proměnné text, který odpovídá číslu chyby, které jí předáme. Možné využití funkce SysErrString() je v rámečku.

...
        HostInfoPtr = NetLibGetHostByName(gNetLibReference,
            jmeno,
            &HostInfoBuf,
            DOBA_CEKANI,
            &chyba);
            
        if(!HostInfoPtr)
        {
            Char text[100];
            SysErrString(chyba, text, 100);
            FrmCustomAlert(UpozorniNaChybu, text, NULL, NULL);

            return -1L;
        }
...

U počítačů s verzí PalmOS vyšší než 4.0, kde je možné používat překryvné moduly (overlays) budou chybová hlášení česká, u ostatních modelů budou anglická. Pokud parametr chyba označuje neexistující chybu, bude obsahem textové proměnné jen hexadecimální číslo (číslo chyby) v závorce.

Program pro vyhledání IP adresy

Funkci SitNajdiPocitac() využijeme v našem dalším programu, který bude sloužit k vyhledávání IP adres počítačů. Jeho zdrojové kódy najdete zde.

Funkce programu bude jednoduchá. Na displeji bude tlačítko pro připojení do sítě internet. Aktivujeme-li jej, změní se text v tlačítku na "Odpojit" a jeho dalším stisknutím se od sítě internet odpojíme (ve skutečnosti jsou ve formuláři tlačítka dvě přes sebe, ale viditelné z nich je jen jedno).

Je-li síť připojena, tak do určeného políčka vyplníme jméno počítače a stiskneme tlačítko "Hledej". Po krátké době se na displeji objeví IP adresa hledaného počítače, kterou vrátí funkce SitNajdiPocitac().

Pokud zadáte jméno neexistujícího počítače, nepodaří se jeho IP adresu nalézt a na displeji se objeví zpráva "Adresa nenalezena" jako na obrázku nahoře. Dojde-li k chybě, bude na displeji zobrazen kód chyby.


Příště si uvedeme, jak vytvořit na počítači Palm Pilot přípojné místo, které můžeme využít pro síťovou komunikaci - port.

  • Nejčtenější

V květnu se zřejmě vrátí ikonická Nokia 3210, kdysi to byl přelomový model

24. března 2024  8:01

Současný vlastník značky Nokia na poli mobilních telefonů, firma HMD (Human Mobile Devices –...

Banka spustila mobilní datové balíčky. Funguje to i zákazníkům z Česka

26. března 2024  12:06

Virtuální banka Revolut spouští virtuálního celosvětového operátora. Zákazníci si mohou kupovat...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Z bídného začátku roku se radují. Vypadá to na velký návrat

21. března 2024  7:02

Zřejmě to vypadá na velký návrat. Huawei začíná drtit své domácí konkurenty, přitom jeho produkty...

Trvalo to. Nový nejlepší fotomobil světa konečně koupíte i v Česku

26. března 2024  7:02

Konečně nastává situace, že nejlepší fotomobil v žebříčku DxO Mark je dostupný i na našem trhu....

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Pochlubili se, že se pochlubí. Značky ze sebe dělají slibotechny

25. března 2024  7:02

Jedním z trochu nečekaných trendů veletrhu MWC v Barceloně se stala oznámení o tom, že firmy nějaké...

Toho telefonu je pouze pro Čínu škoda. Udělal by parádu i u nás

28. března 2024  12:06

Xiaomi má nový trhák. Model Civi 4 Pro trhá předprodejní rekordy, ale jen na domácím čínském trhu....

U foťáků se blýská na lepší časy, naznačuje výsledek testu nového xiaomi

28. března 2024  7:02

Čínská značka Xiaomi trochu na poli fotomobilů v uplynulých letech tápala. Ukazuje to mimo jiné...

Kartónek Steva Jobse se vydražil za neuvěřitelnou sumu

28. března 2024

Vizitku slavného ředitele společnosti Apple si někdo pořídil za pořádný balík peněz. Přidanou...

Smartphonům od Googlu raketově rostou prodeje tam, kde kraluje Apple

27. března 2024  7:02

Prodeje smartphonů Pixel od Googlu se mohou pochlubit neskutečným nárůstem prodejů. Tedy prozatím...

Smoljak nechtěl Sobotu v Jáchymovi. Zničil jsi nám film, řekl mu

Příběh naivního vesnického mladíka Františka, který získá v Praze díky kondiciogramu nejen pracovní místo, ale i...

Rejžo, jdu do naha! Balzerová vzpomínala na nahou scénu v Zlatých úhořích

Eliška Balzerová (74) v 7 pádech Honzy Dědka přiznala, že dodnes neví, ve který den se narodila. Kromě toho, že...

Pliveme vám do piva. Centrum Málagy zaplavily nenávistné vzkazy turistům

Mezi turisticky oblíbené destinace se dlouhá léta řadí i španělská Málaga. Přístavní město na jihu země láká na...

Kam pro filmy bez Ulož.to? Přinášíme další várku streamovacích služeb do TV

S vhodnou aplikací na vás mohou v televizoru na stisk tlačítka čekat tisíce filmů, seriálů nebo divadelních...

Stále víc hráčů dobrovolně opouští Survivor. Je znamením doby zhýčkanost?

Letošní ročník reality show Survivor je zatím nejkritizovanějším v celé historii soutěže. Může za to fakt, že už...