Comment puis-je vérifier par programme si ma machine a un access Internet ou n’utilise pas le C / C ++, s’agit-il simplement d’une requête ping sur une adresse IP? Comment NIC le fait-il? Je veux dire quelque chose comme:
J’utilise Windows 7.
Si vous travaillez sous Windows, essayez ceci
#include #include #include using namespace std; int main(){ if(InternetCheckConnection(L"http://www.google.com",FLAG_ICC_FORCE_CONNECTION,0)) { cout << "connected to internet"; } return 0; }
Je pense qu’il n’y a rien de ce genre, mais vous pouvez essayer ceci:
Le moyen le plus simple consiste à essayer de se connecter à une adresse IP extérieure connue.
En cas d’échec sous Windows, la fonction de connexion renvoie SOCKET_ERROR
et WSAGetLastError
généralement WSAEHOSTUNREACH
(ce qui signifie que le paquet n’a pas pu être envoyé à l’hôte).
Sous Linux, vous obtenez -1
, et errno est ENETUNREACH
. Quelques liens utiles:
1. Lien pour Windows Sockets
2. Lien pour les sockets Linux / Unix
En plus de la fonction InternetCheckConnection (), l’API Win32 dispose d’une fonction ( InternetGetConnectedState () ) qui renvoie un true / false pour (la disponibilité de) une certaine forme de connectivité Internet:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384702(v=vs.85).aspx
Il vous indique également quel type de connexion à Internet vous avez (réseau local, modem, proxy, etc.) – ce qui peut souvent être très pratique.
Il existe en fait un moyen très intelligent, y compris le code snip ici .
En gros, il utilise l’option cmd : En mode CMD, tapez: route print
.
Cela mappera la table de routage avec un tableau et cherchera 0.0.0.0 comme connexion Internet disponible.
Je l’ai utilisé avec un while(true){//the code in here } //check for inet connection , else will sleep for 10 mins and check again
Le code suivant fonctionnera si vous êtes sur Windows:
#include #include 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; }