ソケットを通してmode_t型の変数を送信する必要があります。どうすればいいのですか? snprintf()を使って文字列に変換することができますが、それは大丈夫ですか?クライアントサーバープログラムとmode_t
おかげ
ソケットを通してmode_t型の変数を送信する必要があります。どうすればいいのですか? snprintf()を使って文字列に変換することができますが、それは大丈夫ですか?クライアントサーバープログラムとmode_t
おかげ
mode_t
を安全に送信するには、別の形式に変換する必要があります。通信する2つのホストがmode_t
のために同じフラグ定義を使用すると信じる理由はないので、それを整数で表示するだけでも十分ではありません。すべてのモードフラグを繰り返し処理し、それぞれをチェックする必要があります。
mode_t
は整数です。
実際、ソケット上にテキストプロトコルを使用すると、(デバッグしたり進化させやすい)実用的に便利です。
もちろん、文字列を使用しても問題ありません。しかし、整数として送信する場合は<endian.h>
というヘッダからhtobe32
とbe32toh
のような機能をチェックすることができます。
これらは、 'htonl'と' ntohl'関数の非標準的な名前です... 'mode_t'は32ビットに収まる必要があります。あるいは、それはソケットの両端に同じビットパターンを持っています? –
@ R ..はい。しかし、この場合には必要ない場合でも、64ビットのバリアントがあります。 –