web-dev-qa-db-ja.com

私のマシンがインターネットにアクセスできるかどうかをプログラムで確認します

自分のマシンがC/C++を使用してインターネットにアクセスできるかどうかをプログラムで確認するにはどうすればよいですか?IPにpingを送信するだけですか? NICそれはどのように行われますか?私は次のような意味です:

enter image description here

私はWindows7を使用しています。

12
Aan

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;
}
12

私が思うそのようなものは何もありませんが、あなたはこれを試すことができます:

最も簡単な方法は、既知の外部IPアドレスに接続することです。

Windowsで失敗した場合、接続関数はSOCKET_ERRORを返し、WSAGetLastErrorは通常WSAEHOSTUNREACHを返します(パケットをホストに送信できなかったことを意味します)。

Linuxでは、-1が返され、errnoはENETUNREACHになります。いくつかの便利なリンク:

1。Windowsソケットのリンク

2。Linux/Unixソケットのリンク

4
Kiran

InternetCheckConnection()関数に加えて、Win32 APIには関数(InternetGetConnectedState())があり、(の可用性)に対してtrue/falseを返します。何らかの形のインターネット接続:

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

また、インターネットへの接続の種類(LAN、モデム、プロキシなど)もわかります。これは、多くの場合、非常に便利です。

3
GreatCentralSun

実際には、コードスニップを含む非常に賢い方法があります ここ

基本的に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で使用しました

2
OhadM