udp を介して Arduino と通信するプログラムを C で作成しました。私の質問は、IP アドレスを「ping」して、C (unix) で 1 または 0 (使用可能かどうか) のみを取得するにはどうすればよいかということです。
リストを出力するため、system("ping xxx.xxx.xxx.xxx");
呼び出しが機能しません...?
udp を介して Arduino と通信するプログラムを C で作成しました。私の質問は、IP アドレスを「ping」して、C (unix) で 1 または 0 (使用可能かどうか) のみを取得するにはどうすればよいかということです。
リストを出力するため、system("ping xxx.xxx.xxx.xxx");
呼び出しが機能しません...?
一般に、ネットワーク ホストが起動しているかどうかを判断することはできません。IP ネットワークのメンバーは、パケットを送信することが許可されていません。最善の方法は、通信を開始し、接続されたマシンが何らかの方法で応答する必要があるプロトコルを使用することです。
ただし、マシンが ping には応答するが、UDP パケットには応答しないことが確実な場合は、ping -c 1 192.0.32.10
. ただし、このソリューションは非常に脆弱です。
system("ping -c 1 127.0.0.1 > /dev/null");
トリックを行う必要があります。-c 1
単一のパケットのみを送信します。/dev/null
stdout への出力は気にしないので、パイプします (それはあなたが参照しているリストですか?)。stderr も破棄する場合は2>&1
、末尾に a を追加します。を使用して応答時間を制限することもできます-W
。
呼び出しは、成功または失敗を表す整数を返します。0 は成功を示し、0 以外の整数は失敗を示します。サンプルコードは次のとおりです: http://ideone.com/cf0eR
ping の失敗は、デバイスがオフラインであることを保証しないことに注意してください。制御された環境ではありますが、それが機能することを期待するのはおそらく合理的なことです.