WinSock

[戻る]
veloctiy 2007/06/17(日) 08:46:39
ネットワークプログラムに出で来るin_addr構造体についてですが,
この構造体に入れるIPアドレスはどんな場合も,
IPアドレスをバイナリ値で渡すべきなんでしょうか?

192.168.0.10の値を渡すことはいけませんか?

よろしくお願いします。




struct     in_addr {
 union {
      struct { u_char     s_b1,     s_b2,    s_b3,    s_b4; } S_un_b;
      struct { u_short   s_w1,     s_w2; }              S_un_w;        
      u_long                                            S_addr;
                     
 } S_un;
    #define    s_addr    S_un.S_addr;
    #define    s_host    S_un.S_un_b.s_b2
    #define    s_net    S_un.S_un_b.s_b1
    #define    s_imp    S_un.S_un_b.s_w2
    #define    s_impno    S_un.S_un_b.s_b4
    #define    s_lh    S_un.S_un_b.s_b3
};

瀬戸っぷ [E-Mail] 2007/06/17(日) 12:29:17
> ネットワークプログラムに出で来るin_addr構造体についてですが,
> この構造体に入れるIPアドレスはどんな場合も,
> IPアドレスをバイナリ値で渡すべきなんでしょうか?
> 192.168.0.10の値を渡すことはいけませんか?

「192.168.0.10の値」というのは
"192.168.0.10"ですか?
0x0a00a8c0(inet_addr("192.168.0.10")で得られるunsigned long値)ですか?

veloctiy 2007/06/17(日) 18:41:44
回答ありがとうございます。
in_addr構造体に「ドット付き10進数」のIPアドレスを直接渡すことはできるのか?
ということです。
いろいろ探したんですがはっきり記述されている所が見つかりませんでした。
よろしくお願いします。

瀬戸っぷ [E-Mail] 2007/06/17(日) 21:06:09
質問の意図が伝わらなかったようなのでもう一度…

『「ドット付き10進数」のIPアドレス』というのは
"192.168.0.10"のように文字列ですか?
もしそうであれば、構造体のメンバにポインタがないのですから無理でしょう。
また、IPのパケットヘッダを生成する際にバイナリ(というか32ビット)のフィールドが必
要ですので、
どこかで変換する必要があります。

veloctiy 2007/06/17(日) 22:19:17
どうも回答ありがとうございます。
初心者なもので助かりました。
ドット付き10進数は,"192.334.0.55"の文字列のことです。
ただネットで見つけた言葉なのでこの解釈で良いのか自信はありませんが。
丁寧に教えていただきありがとうございます。

veloctiy 2007/06/17(日) 22:20:01
[[解決]]
解決。

古いスレッドには追加発言できません。