• ベストアンサー

IPアドレス、サブネットマスク取得について

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

質問者が選んだベストアンサー

  • ベストアンサー
  • bird0214
  • ベストアンサー率100% (1/1)
回答No.2

こんにちは。 私も今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のエコープログラムのサンプルがたくさんあるので活用してみてください。

koraru202
質問者

お礼

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

その他の回答 (2)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.3

GetIPAddrTableという関数を使えばIPアドレス関係の情報が取得出来ます。 実際のコードは参考URLを参照してください。

参考URL:
http://homepage2.nifty.com/spw/tips/GetIpTable.html
koraru202
質問者

補足

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

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

IPアドレスの表示なら参考URLにサンプルがあります。 書籍は知りませんがネット上の情報ならwinsockやソケット等で検索すればでてくると思います。 今検索したところ下記のサイトを見つけました↓ http://www.geekpage.jp/programming/winsock/

参考URL:
http://www.kumei.ne.jp/c_lang/intro/no_91.htm
koraru202
質問者

お礼

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

関連するQ&A