Klávesové zkratky na tomto webu - základní
Přeskočit hlavičku portálu

S Palm Piloty na internet snadno a rychle (6)

aktualizováno 
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ší

Berte, dokud je. Mobil pro fajnšmekry po neúspěchu drasticky zlevnil

Essential PH-1

Keramické tělo, jeden z nejmodernějších procesorů, 128 GB vnitřní paměti a velký displej s tenkými rámečky a...

Konkurenci poprvé ukazuje záda, Huawei P20 Pro je nejlepší smartphone

Huawei P20 Pro

Čínský Huawei si dal letos na nových modelech řady P20 opravdu záležet. Model P20 Pro chce být tím nejlepším...



Drsná metoda autoškoly, žáci museli položit své mobily na silnici

Neobvyklý způsob učení parkování v čínské autoškole

V čínské autoškole vymysleli originální způsob, jak naučit studenty velmi opatrně zaparkovat. Na čáry vyhrazené pro...

Američtí teenageři se mohou z iPhonů zbláznit. A zájem roste

iPhone 8 Plus v Drážďanech

Ve Spojených státech je mezi mladými uživateli smartphonů enormní zájem o iPhony - v současnosti je vlastní 82 procent...

Nejnovější smartphone od Samsungu se nedokáže připojit k internetu

Samsung Galaxy J2 Pro ve verzi bez internetu

Samsung připravil smartphone, který by u nás ocenili možná jen senioři. Případně ti, kteří se obávají možného zneužití...

Další z rubriky

Za 23 korun vám aplikace fotku z iPhonu ukáže až za tři dny

Netradiční fotoaplikace Gudak vás donutí nad fotkami zase přemýšlet

Vnímání fotografie se za posledních pár let výrazně změnilo. Díky záznamovým médiím již totiž nemusíme přemýšlet nad...

Záchranku volejte přes aplikaci. Pomoc je rychlejší než při volání na 155

Simulovaná dopravní nehoda jako praktická ukázka fungování mobilní aplikace...

„Záchranná služba, tísňová linka, dobrý den,“ ohlašuje se operátorka volajícímu, který se stal svědkem dopravní nehody....

Ušetříte za mobilní data. Facebook vám ukáže bezplatnou wi-fi

Find Wifi funkce na Facebooku

V aplikaci sociální sítě Facebook se objevila nová užitečná funkce - dovede vás nasměrovat k nejbližší veřejné wi-fi...



Najdete na iDNES.cz