ギリギリ行けるお一人様のライン

LINUXでC言語からsystem(ping 192.168.0.0)を実行して応答を確認、IPアドレスのPCがつながってるかどうか確認したいのですが、出来るでしょうか?
出来るとすれば、どのようにすればよいのでしょうか?

A 回答 (2件)

こんにちは。


No.1さんお答えのようにそのまま書けばOKですが、
Cプログラムの中から呼ぼうというのは特別わけがあるのでしょうか。

ping はエラーコードとしてリモートホストが正常にパケットに反応すれば0、
向こうが応答パケットを返してこなければ1、
ホストがダウンしているなら2を返します。
詳細は「man ping」で。

こんなプログラムをでっち上げてみました(仮称 pingpong.c)。
引数に任意のホスト名または IP アドレスを取れます。

$ pingpong www.example.org

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF 64
#define CHECKCOUNT 5

int main(int argc, char *argv[])
{
int result;
char command[BUF];
char *hostptr = "192.168.0.0";

if (argc == 2) hostptr = argv[1];

if (strlen(hostptr) >= BUF-25)
{
fprintf(stderr, "Hostname too long.\n");
exit(4);
}
/* ping コマンドは饒舌で、-q をつけても完全には黙りません */
sprintf(command, "ping -q -c %d %s >/dev/null", CHECKCOUNT, hostptr);

result = system(command);

/* シェルスクリプトに戻り値を判断させたいなら以下は不要で
すぐに return result; してください */

switch (result)
{
case 1:
puts("No packets received.");
return result;
case 2:
puts("Host unreachable");
return result;
}
return result;
}
    • good
    • 0

あなたがお書きになっている通りに、


#include <stdlib.h>

int main() {
system("ping -c 3 127.0.0.1");
}
でできます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報