自分のマシンがC/C++を使用してインターネットにアクセスできるかどうかをプログラムで確認するにはどうすればよいですか?IPにpingを送信するだけですか? NICそれはどのように行われますか?私は次のような意味です:
私はWindows7を使用しています。
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;
}
私が思うそのようなものは何もありませんが、あなたはこれを試すことができます:
最も簡単な方法は、既知の外部IPアドレスに接続することです。
Windowsで失敗した場合、接続関数はSOCKET_ERROR
を返し、WSAGetLastError
は通常WSAEHOSTUNREACH
を返します(パケットをホストに送信できなかったことを意味します)。
Linuxでは、-1
が返され、errnoはENETUNREACH
になります。いくつかの便利なリンク:
InternetCheckConnection()関数に加えて、Win32 APIには関数(InternetGetConnectedState())があり、(の可用性)に対してtrue/falseを返します。何らかの形のインターネット接続:
https://msdn.Microsoft.com/en-us/library/windows/desktop/aa384702(v = vs.85).aspx
また、インターネットへの接続の種類(LAN、モデム、プロキシなど)もわかります。これは、多くの場合、非常に便利です。
実際には、コードスニップを含む非常に賢い方法があります ここ 。
基本的に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
で使用しました