プロが教えるわが家の防犯対策術!

はじめまして、C言語によるネットワークプログラミングについてお聞きしたいことがあります。
windowsでc言語を使用し自分のIPアドレス・サブネットマスクを取得し、コンソール画面表示するプログラムを作りたいのです。unix系のosではなくても可能でしょうか?ご存知であればソースを載せて頂けると大変助かります。
また、自分はc言語はまだ初心者の域をでていないのでネットワークプログラミングに関する書籍等も教えていただければ幸いです。重ね重ね申し訳ありませんが、よろしくお願いします。

gooドクター

A 回答 (3件)

こんにちは。


私も今winsockで簡単なプログラミングに挑戦中です。ここの掲示板にC言語のことで大変お世話になっています。

IPアドレスとホスト名の表示なら・・・分かります
サブネットの表示方法はわかりませんが・・ごめんなさい。

以下のプログラムは、localName()という関数を自分で記述し、その中でIPアドレスとホスト名を表示しています。

#include <stdio.h>
#include <winsock2.h>

//自端末のIPアドレス&ホスト名の表示
int localName(){
int i = 0;
HOSTENT *lpHost; // ホスト情報を格納する構造体
IN_ADDR inaddr; //IPアドレスを格納する構造体
char szBuf[256], szIP[16]; // ホスト名を保持、IPアドレスを保持

// ローカルマシンのホスト名を取得する
gethostname(szBuf, (int)sizeof(szBuf));
printf("ホスト名=%s\n", szBuf);

// ホスト情報を取得
lpHost = gethostbyname(szBuf);
for(i = 0; lpHost->h_addr_list[i]; i++) {
//IPアドレスを取得
memcpy(&inaddr, lpHost->h_addr_list[i], 4);
strcpy(szIP, inet_ntoa(inaddr));
printf("IPアドレス=%s\n", szIP);
}

return 0;
}

int main(){
//WinSockの初期化
WSADATA wsaData;

if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
perror("WSAStartup Error\n");
return -1;
}

localName();
WSACleanup();
return 0;
}

サブネットの取得方法ですが・・・ちょっと私も初心者でして・・・分かりません。

テキストは、「猫でもわかるネットワークプログラミング」という本が分かりやすいですよ。でも、windowsプログラミングが分からないとちょっと理解しずらいです。(今現在、苦労中です^^;)

ネットでも、UDPやTCPのエコープログラムのサンプルがたくさんあるので活用してみてください。
    • good
    • 0
この回答へのお礼

回答有難うございます。ソースも書いて頂き、本当にありがとうございます!丁寧なコメントもあり、大変分かりやすかったです。
テキストの紹介も有難うございました。早速見てみようと思います^^

お礼日時:2006/11/25 18:15

GetIPAddrTableという関数を使えばIPアドレス関係の情報が取得出来ます。


実際のコードは参考URLを参照してください。

参考URL:http://homepage2.nifty.com/spw/tips/GetIpTable.h …

この回答への補足

回答有難うございます。
早速URLを見たのですが、分からない点がありまして・・・。二重になってしまうのですが、質問してもよろしいでしょうか?
ソースの1行目に「//iphlpapi.lib をリンクする必要がある」とあるのですが、サイトや書籍を見ても、どのような設定をしたらライブラリファイルをリンク出来るのかわかりません。OSはXPで、コンパイラはBorland C++ Compiler 5.5を使っています。お手数をおかけして申し訳ありませんが、教えていただけないでしょうか?

補足日時:2006/11/25 18:15
    • good
    • 0

IPアドレスの表示なら参考URLにサンプルがあります。



書籍は知りませんがネット上の情報ならwinsockやソケット等で検索すればでてくると思います。
今検索したところ下記のサイトを見つけました↓
http://www.geekpage.jp/programming/winsock/

参考URL:http://www.kumei.ne.jp/c_lang/intro/no_91.htm
    • good
    • 0
この回答へのお礼

回答有難うございます。サイト参考にさせていただきました。
お恥ずかしい話、検索ワードも分からなかったので助かりました。

お礼日時:2006/11/25 18:10

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

gooドクター

人気Q&Aランキング