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ší

Stáhli si nahrávač hovorů, teď jim útočníci mohou vysát bankovní účty

Ilustrační snímek

Aplikace pro nahrávání hovorů QRecorder může být po aktualizaci zavirovaná. Útočník se tak může dostat k bankovním...

Takto vypadá boj o zákazníky: pětkrát více dat a úhrada smluvní pokuty

Slovenský operátor O2 navýšil základní data u vybraných tarifů

Od revoluce v roce 2013 zažívá český mobilní trh spíše menší otřesy, zákazníci operátorů toužící po neomezeném tarifu s...



Huawei se směje Applu. Lidem ve frontě na iPhony rozdával občerstvení

Huawei rozdával čekajícím ve frontě na nové iPhony džus a nabíjel jejich...

Minulý pátek se zájemci o nové iPhony tradičně postavili do front, aby mohli mít nový smartphone mezi prvními. Toho...

Za hodně peněz hodně muziky. Recenze vrcholného iPhonu XS Max

iPhone XS Max

Apple slavil v loňském roce výročí deseti let od uvedení svého prvního smartphonu. Proto připravil zcela nový přístroj,...

Konkurence se trefuje do „předražených“ nových iPhonů

Všechny tyto produkty Xiaomi stojí stejně, jako nový model iPhone XR

Na vysoké ceny novinek od Applu reagovali konkurenti poněkud posměšnými nabídkami. Ukazují v nich, co všechno z jejich...

Další z rubriky

Na aplikace alternativních taxi útočí virus. Pase po údajích ke kartám

Virus pro Android

Uživatelé mobilních aplikací alternativních taxi včetně aplikace Uber by měli být obezřetní. Ohrožuje je totiž nový...

Sem chodí smartphony umřít. Aplikaci lze použít jen s vybitou baterií

Die With Me

Aplikace s názvem Umři se mnou má velmi neobvyklé omezení. Nemůžete ji zapnout, pokud máte telefon nabitý víc než na...

Tyto aplikace vám řeknou vše o počasí. Vyberte si pro vás tu pravou

Ilustrační snímek

Nástroje, které vám pomohou zjistit, jaké bude počasí, jsou v mobilu mnohdy neocenitelným pomocníkem. Vybrali jsme ty...

Najdete na iDNES.cz