Delphi mester, hogyan lehet azonosítani a számítógép csatlakozik az internethez, vagy sem (dokumentáció, forráskód,
Hogyan lehet azonosítani a számítógép csatlakozik az internethez, vagy nem?
Az elmúlt években, csodálatra méltó postoyannstvom felmerül a kérdés: „Hogyan lehet csatlakozni a számítógép az Internet, vagy nem?”. Megengedjük magunknak, hogy találgatásokba ebben a témában, és a magyarázata az elvek hálózati kölcsönhatások.
Sokan látták el a következő helyzetet: egy számítógépen futó MS Windows hálózati kártya ér. Tegyük fel, hogy helytelenül beállított kártya driver, vagy a számítógép fizikailag nem csatlakozik a hálózathoz. Betöltésekor, a rendszer nem ad semmilyen hibát. Csak miután próbál, például, hogy adja meg a Network Neighborhood, egy üzenet jelenik meg a hálózat nem érhető el.
Így:- először is a szempontból a rendszer (vagyis a szoftvert egy része) nem lehet meghatározni, hogy abban a pillanatban, az adatátvitel is lehetséges (azaz van-e a hírhedt „kapcsolat”), és anélkül, hogy az átviteli;
- másrészt az a fentiek alapján, azt a kérdést kell tenni a következő formában: „Van néhány hozzáférési pontot, illetve a hálózati szolgáltatás?” (Azaz, hogy a tényleges adatátvitel lehetséges?)
Elindításához eloszlatni a meggyőződés, akik úgy gondolják, hogy a válasz erre a kérdésre, akkor a következő módszereket és funkciók:
Annak érdekében, hogy a haszontalanság ezt a funkciót a céljainknak, elegendő, hogy nézd meg a leírást MSDN:
„Te nem hivatkozhat pusztán arra a tényre, hogy a InternetGetConnectedState visszatérő TRUE azt jelenti, hogy van egy érvényes aktív internetkapcsolat. Lehetetlen InternetGetConnectedState annak meghatározására, hogy az egész kapcsolatot az interneten működik anélkül, kérést küld a szervernek. Ez miért van kell küldeni a kérelmet annak megállapítására, ha valóban kapcsolatban, vagy sem. Ön biztos lehet abban, hogy amennyiben InternetGetConnectedState TRUE értékkel tér vissza, hogy megpróbálja a kapcsolat nem fog okozni, hogy megkéri, hogy csatlakozzon az alapértelmezett Internet Service Provider ".
„Te nem hivatkozhat pusztán arra a tényre, hogy ha f-CIÓ InternetGetConnectedState TRUE értékkel tér vissza, az azt jelenti, hogy van egy aktív internetkapcsolat. InternetGetConnectedState nem tudja megállapítani, hogy az internetkapcsolat működik hivatkozás nélkül a szerver.”
Az egyetlen hasznos ez a funkció, hogy egyszer ő visszatért TRUE, akkor nem, amikor megpróbál csatlakozni az Internet által kínált először csatlakozik hozzá.
Gethostbyname () függvény - a felbontás nevekre.
Az eredmény a függvény visszatérési, jelezve - szerint az MSDN - a sikeres ez, csak annyit, hogy a rendszer megfelelően van konfigurálva és a rendelkezésre álló DNS szolgáltatást. Jellemzően a DNS-szerverek találhatók sem a helyi hálózaton vagy a helyi hálózaton, amelyhez a számítógép csatlakozik-e a (vállalati hálózat, például). Bár természetesen a névszerver, és része annak, amit ma a web, és ebben, a másik esetben a sikeres megoldása a fogadó nevét megmondja nekünk csak a DNS-kiszolgáló elérhető és nem több.
Aktivitásának a meghatározása A egy telefonos-kapcsolat egy bizonyos ISP.
A legfontosabb dolog ebben az esetben az, hogy a betárcsázós, általában nem kapcsolódik az internethez. Ez csak egy eszköz, hogy csatlakoztassa a hardver és szoftver rendszerek távoli szoftver és hardver rendszerek, de nem a hálózathoz. Más szóval - a felfedezés néhány aktív telefonos-vegyület csak azt mutatja, hogy a két, földrajzilag egymástól távol telepített számítógépek kommunikációs alkalmazásával alacsony szintű protokollok mezhmodemnoy kapcsolatot, és az egyik logikai protokollok Távoli elérés (PPP, SLIP, és mások) . Ez - csak egy a lehetséges kommunikációs csatornákat a két számítógép között, amely felhasználható bármilyen célra, beleértve kommunikálni Internet házigazdák.
És most - az igazság!
Ami a TCP / IP protokollt, hogy megoldja a problémát, akkor megy csak két helyes módja van:- A következő ICMP protokoll: ping segédprogram, traceroute; (Válaszok a kérdésre, a rendelkezésre álló egy host, de nem mond a rendelkezésre álló egy adott szolgáltatás ezen a csomóponton.). Billentyûfunkciók - IcmpSendEcho () (végre ICMP.DLL) InternetCheckConnection () (végre WININET.DLL)
- Próbáljon csatlakozni bármely internetes oldalon. vagy nekünk, vagy szükséges legvalószínűbb futó pillanatában (keresők, helyszínek nagyvállalatok, stb), amely meghatározza a programban reakció hibák a hívás kapcsolatot jellemzők (a legmegbízhatóbb és megbízható módon, hogy ellenőrizze, hogy a rendelkezésre álló elemek és szolgáltatások) . A legfontosabb funkciója a kereslet - Connect () (megvalósított WS2_32.DLL)
Példa ICMP keresztül ICMP API (1. útvonal) ismertetett a megfelelő cikket.
A végrehajtás a 2. útvonal legyen finom kész komponensek szabványos paletta Delphi Internet, FASTNET (TClientSocket, TPowerSock), valamint számos, a komponensek az Indy csomagot. Akkor nem ugyanaz, és végre a saját algoritmus direkt Winsock API-hívásokat.
Röviden összefoglalva az összes fenti elmondhatjuk a következőket.
Internet definíció szerint - a globális hálózat, Ethernet hálózaton keresztül. „Connection” az interneten, ebből a szempontból, csak egy lehetséges (ami nem garantált) képes „kommunikálni” a számítógép (host), egy hálózati számítógép (node) egy másik hálózati készlet Internet-szolgáltatási megállapodások nyújtásával egy ilyen lehetőség az online -provayderami mindkét oldalon. És ha egy ilyen funkció megvalósítható idején kamat (target számítógép / node „megfelel” a csatlakozási kísérletek „és vagy ping” a) lehet érvényesíteni egy bizonyos valószínűsége, hogy „számítógép csatlakozik az internethez.”