inet_aton()とinet_ntoa()
何となくネットワークプログラミング的なことを。ドット付10進表記 <-> バイナリの変換を行う関数。かなり適当に作っちゃいました。
#include#include #include #include #include #include /* IPアドレスをネットワークバイトオーダに変換する関数 */ /* 関数内で inet_aton() をcallする */ /* 引数はIPアドレスと構造体 in_addr へのポインタ */ int resolv(char *str, struct in_addr *inp); int main(void) { struct in_addr addr1; struct in_addr addr2; /* ascii to network */ resolv("192.168.0.1", &addr1); resolv("192.168.0.16", &addr2); /* network to ascii */ printf("\n%x = %s\n", addr1.s_addr, inet_ntoa(addr1)); printf("%x = %s\n", addr2.s_addr, inet_ntoa(addr2)); return(0); } int resolv(char *str, struct in_addr *inp) { inet_aton(str, inp); /* Ascii To Network */ printf("%s = %x\n", str, inp->s_addr); return (0); } 実行結果 [root@lk022 src]# ./sock 192.168.0.1 = 100a8c0 /*192.168.0.1は C0A80001 だから、* 192.168.0.16 = 1000a8c0 *逆に格納されている模様。 */ 100a8c0 = 192.168.0.1 1000a8c0 = 192.168.0.16