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

Ilustrační snímek
Úřad chce regulovat mobilní trh. Může to zlevnit volání a rychlá data

Podle Českého telekomunikačního úřadu na trhu nefunguje hospodářská soutěž. Regulaci však bude předcházet veřejná konzultace a následně analýza trhu. Výsledky...  celý článek

Nokia 8
Nejlepší Nokia 8 má skvělý výkon a je to první „obojíčkový“ smartphone

Nový vlastník značky Nokia konečně představil svůj top model. Novinka s označením 8 je špičkový smartphone, který ctí tradice. Nemá displej přes celé čelo, ale...  celý článek

rozbitý telefon
Revoluční patent: mobil si sám opraví prasklý displej

Zní to jako pořádné sci-fi, ale praskliny na displeji možná mobily v budoucnu opraví samy. Poslední patent Motoroly naznačuje, že se na takové technologii už...  celý článek

Podobu iPhonu 8 potvrdil řetězec McDonald’s.
Hamburgerový král prozradil podobu iPhonu 8 s vykrojeným displejem

Představení chystaného výročního iPhonu se blíží. Řada vlastností už byla potvrzena. Nyní přichází další, a to od neočekávaného zdroje. Vzhled telefonu...  celý článek

Nubia Z11 miniS
Nubia zlevnila i o více než tisíc korun. A rovnou všechny modely

Nubia zlevnila prakticky celý svůj sortiment na českém trhu. Hned několik modelů se tak dočkalo cenovky nižší i o více než tisíc korun.  celý článek

Další z rubriky

Ilustrační snímek
S těmito aplikacemi se o dovolené neztratíte. Najdou let i levný hotel

Místo slovníku, mapy a průvodce už řada lidí vyráží na dovolenou na neznámé místo jen se svým telefonem. V mnoha situacích je totiž neocenitelným pomocníkem....  celý článek

Ilustrační snímek
Na dovolené se můžete seznámit i nespálit

Na dovolenou si bereme kde co, ovšem počítač/notebook často zůstává doma. Ten je na jedné straně prostředkem k pohodlnému přístupu k informacím, na druhé pak k...  celý článek

Logo aplikace Sarahah
Už přes ni vyhrožovali smrtí. Přesto je aplikace extrémně populární

Vysoký nárůst popularity zaznamenala aplikace Sarahah, určená k posílání anonymních zpráv. Ačkoliv se v posledních týdnech těší velké oblibě, zahaluje ji také...  celý článek

Akční letáky
Akční letáky

Všechny akční letáky na jednom místě!

Najdete na iDNES.cz



mobilní verze
© 1999–2017 MAFRA, a. s., a dodavatelé Profimedia, Reuters, ČTK, AP. Jakékoliv užití obsahu včetně převzetí, šíření či dalšího zpřístupňování článků a fotografií je bez souhlasu MAFRA, a. s., zakázáno. Provozovatelem serveru iDNES.cz je MAFRA, a. s., se sídlem
Karla Engliše 519/11, 150 00 Praha 5, IČ: 45313351, zapsaná v obchodním rejstříku vedeném Městským soudem v Praze, oddíl B, vložka 1328. Vydavatelství MAFRA, a. s., je členem koncernu AGROFERT.