Comer 著、TCP/IP Vol III を使用したインターネットワーキングを読んでいる最中です。
UDP の「TIME」クライアントのサンプル コードを見ています。
コードは応答の読み取りを行うポイントに到達し、4 バイトであるべきものを取り、それを 32 ビットの符号なし整数に変換するため、UNIX 時間に変換できます。
「n」は、UDP をリッスンするソケットを指すファイル記述子です。
n = read (s, (char *)&now, sizeof(now));
if (n < 0)
errexit("read failed: %s\n", strerror(errno));
now = ntohl((u_long)now); /* put in host byte order */
私が疑問に思っているのは:
変換を行う前に確認すべきいくつかの仮定はありますか? これは C であり、read が 4 以外のバイト数を渡す状況があるかどうか疑問に思っています。
「今」は次のように定義されます。
time_t now; /* 32-bit integer to hold time */
したがって、「time_t」の性質、Cでバイトがどのように渡されるのか、またはUDPがファイル記述子に間違ったバイト数を返す状況を理解していない可能性があります...
前もって感謝します。