課題3
サンプルプログラム(2)のクライアント(tcpc2.c)とサーバ(tcps2.c)をアドレスファミリ独立となるように書き換えよ。
このプログラムは、以下のようにIPv4に依存した部分が幾つもハードコーディングされている。
- sockaddr_inが使われている。
- hbufがIPv4アドレスの最大文字数長分(INET_ADDRSTRLEN)になっている。
- gethostbynameが使われている。
- socket関数がハードコーディングされたAF_INETを使っている。
- socket関数がSOCK_STREAMにIPPROTO_TCPをハードコーディングしている。
- inet_ntopがハードコーディングされたAF_INETと一緒に使われている。
以上の点に注意して、アドレスファミリ独立のプログラムに書き換えること。
変更したソースコード
server-x.c
client-x.c
実行結果
----------------------------------------------------------------------------------------
nw0525.st.ie.u-ryukyu.ac.jp:/Users/j05025/ipv6> server-x 1500
nw0525.st.ie.u-ryukyu.ac.jp:/Users/j05025/ipv6> client-x nw0525.st.ie.u-ryukyu.ac.jp 1500
trying 133.13.59.25 port 1500
Hello ::ffff:133.13.59.25
nw0525.st.ie.u-ryukyu.ac.jp:/Users/j05025/ipv6>client-x 133.13.59.25 1500
trying 133.13.59.25 port 1500
Hello ::ffff:133.13.59.25
nw0525.st.ie.u-ryukyu.ac.jp:/Users/j05025/ipv6>client-x ::ffff:133.13.59.25 1500
trying 133.13.59.25 port 1500
Hello ::ffff:133.13.59.25
----------------------------------------------------------------------------------------