課題1


課題1: tcpv6cはIPv4とIPv6の両方に対応しているにもかかわらず、tcpc(IPv4のみに対応)よりコードが短い。この理由は何故か説明せよ。(ヒント:両プログラムのアドレスとポート番号の変換処理部分に着目せよ)

tcpv6c.c tcpc.c

両プログラムでは使用される関数が違うためにコードに差が出ている。その関数を以下に示す。

tcpc.cに使用されていた関数


inet_addr()
インターネットホストのアドレスをネットワークバイトオーダでのバイナリ値として返す。

gethostbyname()
ホストに対応する構造体を返す

atoi()
nptrが示した文字列をint型の整数に変える

getservbyname()
/etc/servicesよりプロトコルを必要とするものを探し、サーバの情報を構造体で返す

ntohs()
netshortをホストバイトオーダーに変換する


tcpv6cで使われている関数

getaddrinfo()
getipnodebyname, getipnodebyaddr, getservbyname, getservbyportという4つの関数の機能をまとめたものである。 これでネットワークホストのアドレスを取得でき、さらにポート番号も調べることができる.