C++ サーバー/クライアント環境をセットアップし、サーバーからクライアントに time_t 値を送信しようとしています (どのサーバーでも便利なことです)。しかし、私は頭痛の種に出くわしています: time_t はどのサイズ仕様にも属していないようです。ネットワーク経由で time_t を送信する最も安全な (より移植性の高い) 方法は何だろうと思っています。
これはちょっとした例です:
time_t T = time(NULL);
unsigned char * P = (unsigned char *)&T;
// ... Convert it to network byte order, etc.
// Here, 's' would be the socket, and 'S'
// the size of the data that is going to
// be sent
send(s, P, S, 0);
2 つの問題があります。
- time_t はサイズ固定ではありません
- time_t は、符号付きまたは符号なしの整数データ型の typedef にすることができます
(ほぼ) 任意のアーキテクチャ間で安全に送信できるように、その 2 つの問題を処理するにはどうすればよいですか?
前もって感謝します。
編集:同じ3つの回答を見た後、ここで回答する方が良いと思います. 申し訳ありませんが、以前にそれを明確にしませんでした。文字列として送信しても問題ありませんが、「純粋な」バイトで送信することを好みます。私が理解している限りでは、ホスト システムの time_t データ型の署名とサイズを (再度) 心に留めておく必要がありますね。(感謝と申し訳ありません)