課題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():上記の関数の動作を備えており、またポート番号も取得できる