■stdio
読み方:スタンダード・アイオー


■file descriptor
プログラムがアクセスするファイルや標準入出力などをOSが識別するために用いる識別子。0から順番に整数の値が割り当てられる。OSによってはファイルディスクリプタにバッファ管理機能なども含めた「ファイルハンドル」と呼ばれる管理体系が存在する。

 ファイルディスクリプタには、識別子とともにファイル名、ファイルサイズ、プログラムが操作中のファイル内の位置、ファイル作成、更新日時などの情報が含まれており、OSは識別子によってどのファイルを操作するかを判断する。

 通常、0:標準入力(stdin)、1:標準出力(stdout)、2:標準エラー出力(stderr)の3つはOS(シェル)が最初に用意するため、プログラムがファイルをオープンすると「3」から順番にディスクリプタが割り当てられる。


■htons()
htons は host to network short の省略というような命名規則になっています
u_long htonl (u_long hostlong);
u_short htons (u_short hostshort);
u_long ntohl (u_long netlong);
u_short ntohs (u_short netshort);

htonl() と htons ()はホストバイトオーダーをネットワークバイトオーダーに変換します
hostlong には 32 ビットホストバイトオーダーを
hostshort には 16 ビットホストバイトオーダーを指定します
関数は、ネットワークバイトオーダー表現に変換して値を返します

ntohl() と ntohs() はネットワークバイトオーダーをホストバイトオーダーに変換します
netlong は 32 ビットネットワークバイトオーダーを
netshort には、16 ビットネットワークバイトオーダーを指定します
関数は、ホストバイトオーダー表現に値を変換して返します

■sockaddr_in 構造体
netinet/in.h
struct sockaddr_in {
u_char sin_len; /* 構造体の長さ */
u_char sin_family; /* PF_INET */
u_short sin_port; /* ポート番号 */
struct in_addr sin_addr; /*アドレス*/
char sin_zero[8]; /*詰物*/
};
struct in_addr {
u_long s_addr; /* アドレス */
};


■ポート番号について
1-1023 well-known port
1024-49151 reserved
49142-65535 free


■AF_INET PF_INET
AF は address family
PF は protocol family
socketごとのaddressの振り方はprotocolによって異なる。通常protocol familyとaddress familyは一対一に対応している。

注)sockaddr構造体のサイズはaddress familyによって異なる。

■inetd (ネットワーク) [あい・ねっと・でぃー]
ポート監視サーバのこと。/etc/inetd.conf は [あい・ねっと・でぃー・こんふ]。


■inet_addr
in_addr_t inet_addr(const char *strptr);
アドレスを表す文字列を, ネットワークバイト順序のバイナリ値へ
「127.0.0.1 」は人間には分かりやすいが, コンピュータには分かりにくい

■incompatible implicit declaration of built-in function ‘memset’
memset関数が暗黙宣言と両立しない。
つまり、必要なヘッダーファイルをincludeしろと言うこと。
%man memsetで詳細を調べると⇒が足りなかったようだ。