楽墨堂ソフトウェア研究室:Digi Connect ME:現在のIP情報の取得
 

コモンライブラリを使用して現在のIP情報の取得し表示するためのテストプログラム。
以下のソースコードを/netos63_gnu/src/apps/に展開。
ipinfo_test.zip

ビルド方法:
NET+Works 6.3 Build Enviromentを起動
$ cd src/apps/ipinfo_test/32b
$ make PLATFORM=connectme clean all

使用する関数の説明:
aceAddrInfo addr_info;
customizeAceGetInterfaceAddrInfo(BP_ETH_INTERFACE, &addr_info);
これはbsp標準の関数。
aceAddrInfo構造体の変数addr_infoに現在設定されている情報を取得する。
これは様々なIP関連の情報を含んでいる。

BYTE mac_addrp[6];
customizeGetMACAddress(mac_addrp);
これもbsp標準の関数。
設定されているMACアドレスをmac_addrpに得る。

char* ip2s(unsigned long ip);
char* mac2s(unsigned char* mac);
指定したIPアドレスやMACアドレスから文字列を得る関数。表示等に利用する。
戻り値は文字列へのポインタであり上記関数が10回呼ばれるまでは違うキャッシュを利用するが11回目は
1回目と同じキャッシュを利用するので直ぐに利用しない場合はコピーしておく必要がある。

int is_network_linking();
現在LANポートが他のポート(ハブ等)に接続されているか否かを得る関数。
戻り値が非0なら接続、0なら非接続されていることを示す。

32b/makefileには
ROM用ファイルを作成しない指定:
 BUILD_ROM_IMAGE= 0
コモンライブラリファイル(net.c)の追加:
 APP_C_FILES=root.c net.c
コモンライブラリへのソース検索パスの追加:
 vpath %.c ../../common
コモンライブラリへのインクルード検索パスの追加:
 APP_INCDIRS= -I.. -I../../common
を設定している。コモンライブラリを使う場合には同様の設定がmakefileに必要となるので覚えておくこと。


補足:
表示される情報のうち protocol は何によってIPが得られたかを示している。
この値が2であればDHCP、6であればスタティックにてIPが設定されていることを示す。
mtuは0を表示する。0の場合はディフォルト値(1500?)を表しているように思われるが。。。実際はどうなのだろうか不明である。


 
Copyright© 2006 Laksmi-Do Corp. All rights reserved.
連絡先(@を半角に) develop@laksmido.com