ПредишенСледващото

Как да се идентифицират компютърът ви е свързан към интернет, или не?

През последните години, с възхищение postoyannstvom възниква въпросът: "Как мога да се свържа с компютър с интернет, или не?". Позволяваме си да се спекулира по тази тема и да обясни някои от принципите на взаимодействие на мрежата.

Много от вас са виждали следния сценарий: На компютър с MS Windows мрежова карта е на стойност. Да приемем, че неправилно конфигуриран карта на водача или на компютъра не е физически свързан към мрежата. При зареждане, системата няма да даде никаква грешка. Едва след като се опитвате, например, за да влезете в Network Neighborhood, се появява съобщение на мрежата недостъпен.

Следователно:
  • от една страна, от гледна точка на системата (което означава, софтуерната част от нея) не може да се определи дали в момента на предаване на данни е възможно (т.е. дали има прословутия "Connection") и без предаването;
  • На второ място, въз основа на изложеното по-горе, въпросът трябва да се постави в следния вид: "Има някои точка за достъп или услуга на мрежата?" (Т.е. дали фактическото предаване на данни е възможно това?)
Отговорът на това ще се обучават.

За да започнете да разсее вярванията на тези, които смятат, че отговорът на този въпрос, можете да използвате следните методи и функции:

За да сте сигурни на безполезността на тази функция за нашите цели е достатъчно да погледнете описанието в MSDN:

"Вие не можете да разчитате единствено на факта, че InternetGetConnectedState връщат TRUE означава, че имате валиден активна връзка към интернет. Невъзможно е InternetGetConnectedState да се определи дали цялото времетраене на връзката към Интернет функционира, без да изпрати искане до сървъра. Това е причината да трябва да изпрати искане да се определи дали наистина е свързан или не. можете да бъдете сигурни обаче, че ако InternetGetConnectedState връща TRUE, че опитът на връзката ви няма да доведе до бъдете подканени да се свържете с доставчика на интернет услуги по подразбиране ".

"Вие не можете да разчитате единствено на факта, че ако е-ТА InternetGetConnectedState връща TRUE, това означава, че има активна връзка към интернет. InternetGetConnectedState не може да се определи дали интернет връзка функционира без да се позовава на сървъра."

Единствената полезна тази характеристика е, че след като тя се връща TRUE, тогава няма, когато се опитате да се свържете с интернет, предлагани първо се свърже с него.

GetHostByName () функция - разрешаването на имена на хостове.

Резултатът се завърна от тази функция, което означава - в зависимост от MSDN - успешното приключване на него, казва само, че системата е конфигуриран правилно и достъпно DNS услуги. Обикновено, DNS сървъри са разположени или на местния доставчик на мрежа или локална мрежа, към която е свързан компютърът ни (корпоративна мрежа, например). Въпреки че, разбира се, името на сървъра и са част от това, което е днес на уеб, и в този и в друг случай, успешното решаване на името на хоста ще ни каже само за DNS-сървъра е на разположение и не повече.

Определяне на активността на един циферблат-връзки с определен доставчик.

Основното, което в този случай е, че една телефонна линия, като цяло, не е свързан с интернет. Това е просто един инструмент, за да се свържете нашите хардуерни и софтуерни системи за дистанционно софтуерни и хардуерни системи, но не и към мрежата. С други думи - откриването на едни от най-активните в момента телефонна линия-съединението показва само, че между две географски отдалечени един от друг компютри, инсталирани комуникации с помощта на ниско ниво протоколи mezhmodemnoy връзка и един от Remoting логиката протоколи (PPP, SLIP, и др) , Това е - само един от възможните канали за комуникация между два компютъра, които могат да се използват за всякакви цели, включително и за комуникация с Интернет хостове.

А сега - истината!

От гледна точка на TCP / IP протокол за решаване на проблема, можете да отидете само две правилни начини:
  1. Използвайте ICMP протокола: пинг полезност, проследяващи; (Отговаря на въпроса за наличието на множество, но не казва за наличието на определена услуга на този възел.). Функции на бутоните - IcmpSendEcho () (приложена в ICMP.DLL), InternetCheckConnection () (приложени в Wininet.DLL) повтарят
  2. Опитайте се да се свърже с всеки сайт в Интернет. или на нас или е необходимо да се най-вероятно в момента тече (търсачки, сайтове на големи компании, и т.н.), определяне на реакцията програма за грешки в характеристиките на връзката повикване (най-надежден и сигурен начин да се провери как наличието на компоненти и услуги) , Ключова функция от търсенето - Connect () (приложена в WS2_32.DLL)

Пример на ICMP чрез ICMP API (1 път), описани в съответната статия.

За изпълнението на втория път трябва да се оправи готови компоненти от стандартните палитри Delphi интернет, Фастнет (TClientSocket, TPowerSock), както и много от компонентите от пакета за Indy. Можете да направите същото и прилагане на свой собствен алгоритъм, използващ директна Winsock API-разговори.

Като кратко обобщение на всички по-горе може да се каже следното.

Интернет е по дефиниция - глобална мрежа, Ethernet мрежа. "Свързване" към интернет, от тази гледна точка, има само потенциал (което не е гарантирана) способността да "общуват" с компютър (хост), компютърна мрежа (възел) към друга мрежа комплект за споразумения Интернет-услуги с предоставянето на такава възможност онлайн -provayderami двете страни. И ако такава функция е реализуема в момента на интерес (цел компютър / възел "съответства на" опита за свързване "и или пинг" а), може да се твърди с определена степен на вероятност, че "компютър, свързан с Интернет."

Свързани статии

Подкрепете проекта - споделете линка, благодаря!