実験環境


実験は以下の環境で行った

機種:iBookG4
OS:MacOSX 10.3.9 Tiger
コンパイラ:gcc version 4.0.0 (Apple Computer, Inc. build 5026)

課題1


tcpv6cはIPv4とIPv6の両方に対応しているにもかかわらず、tcpc(IPv4のみに対応)よりコードが短い。この理由は何故か説明せよ。

【tcpv6c.cとtcpc.cのプログラムの比較】


tcpv6c.cのソース
tcpc.cのソース

以上の二つのソースから考察する。

【関数について】
inetaddr()関数:インターネットホストのアドレスを"数値とドット"記法からバイナリ値へ変換して返す関数。
gethostbyname()関数:与えられたホスト名に対応する構造体を返す関数。
atoi()関数:nptrによって指示される文字列のはじめの部分をint型に変換する関数。
getservbyname()関数:プロトコルを用いるサービスの名前にマッチする行を/etc/servicesから探し、その行の内容を含めたservent構造体を返す関数。

【理由】
tcpv6cではこれらの関数をひとまとめに行なう事が出来るgetaddrinfo()関数を用いていた為に、tcpcと比べて大幅に短いソースで実行出来たと考えられる。