課題1
tcpv6cはIPv4とIPv6の両方に対応しているにもかかわらず、tcpc(IPv4のみに対応)よりコードが短い。
この理由は何故か説明せよ。(ヒント:両プログラムのアドレスとポート番号の変換処理部分に着目せよ)
tcpv6c.c
tcpc.c
tcpcよりtcpv6cのコードが短い理由
tcpv6cがtcpcより短いコードで済んでいるのは,tcpcで使われている4つの関数の処理を、tcpv6では1つの関数でこなしているからである。tcpcではinetaddr(),gethostbyname(),atoi(),getservbyname() という4つの関数が行う動作を,tcpv6ではgetaddrinfo()という一つの関数だけで行っているため、コードが短くて済むのである。
使用されている関数について
atoi():nptrが指す文字列の先頭部分をint型の表現に変換する
inetaddr():ホストアドレスを表す文字列を,ネットワークバイト順序のバイナリ値へ変換する
gethostbyname():指定されたホスト名からhostent構造体を返す
getservbyname():http・smtp・ftp などのサービス名を,対応するポート番号に変換する
getaddrinfo():上記の関数の動作を備えており、またポート番号も取得できる