Программно проверить, есть ли у моей машины доступ в интернет или нет

Как программно проверить, имеет ли моя машина доступ в Интернет или нет с использованием C / C ++, это просто вопрос проверки связи с IP? Как NIC это делает? Я имею в виду что-то вроде:

введите описание изображения здесь

Я использую Windows 7.

12

Решение

Если вы работаете в Windows, просто попробуйте это

#include <iostream>
#include <windows.h>
#include <wininet.h>
using namespace std;

int main(){

if(InternetCheckConnection(L"http://www.google.com",FLAG_ICC_FORCE_CONNECTION,0))
{
cout << "connected to internet";
}

return 0;
}
11

Другие решения

Я думаю, что нет ничего подобного, но вы можете попробовать это:

Самый простой способ — попытаться подключиться к известному внешнему IP-адресу.

Если произойдет сбой в Windows, функция подключения вернется SOCKET_ERROR, а также WSAGetLastError будет обычно возвращаться WSAEHOSTUNREACH (то есть пакет не может быть отправлен на хост).

В Linux вы получите обратно -1и будет ошибаться ENETUNREACH,
Несколько полезных ссылок:

1. Ссылка для сокетов Windows

2. Ссылка для сокетов Linux / Unix

4

В дополнение к функции InternetCheckConnection (), в Win32 API есть функция ( InternetGetConnectedState () ) который возвращает истину / ложь для (наличия) некоторой формы подключения к интернету:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa384702(v=vs.85).aspx

Он также сообщает вам, какой тип подключения к Интернету у вас есть (локальная сеть, модем, прокси и т. Д.), Что часто очень удобно знать.

3

На самом деле есть очень умный способ, в том числе фрагмент кода Вот.

Это в основном с помощью CMD опция: в то время как в CMD ударил: route print,

Это сопоставит таблицу маршрутизации с массивом и будет искать 0.0.0.0 как доступное интернет-соединение.

Я использовал это с while(true){//the code in here } //check for inet connection , else will sleep for 10 mins and check again

1

Следующий код будет работать, если вы находитесь на окнах:

#include <iostream>
#include <windows.h>

int main(){

if (system("ping www.google.com")){
std::cout<<"\nNot connnected to the internet\n\n";
}
else{
std::cout<<"\nConnected to the internet\n\n";

}
system("pause");
return 0;
}
-1
По вопросам рекламы [email protected]