ソケットがセットアップされた後、ソケット記述子で read(2) および write(2) 呼び出しを使用するか、fdopen(3) を使用してストリームをソケット記述子に関連付けてから stdio(3) 関数を使用する方がよい方法ですか? ?
int sfd = socket(PF_INET, SOCK_STREAM, 0);
// setup the socket using sfd
FILE * stream = fdopen(sfd, "r+");
// use fprintf, fscanf, etc
編集:ストリームのバッファリングも解除します
setbuf(stream, NULL)
コメントに記載されているように、フラッシュする必要がないようにします。
FILE* ストリーム用に記述されたコードを再利用できるため、私はこのアプローチを使用してきました。また、フォーマット文字列を使用できるという利点があります (私は人間が読めるテキストを扱っています)。GNU は、これが良い考えであると示唆しているようです。
http://www.gnu.org/software/libc/manual/html_node/Streams-and-File-Descriptors.html
ただし、通常、ソケットを使用するコードを見ると、すべての操作でストリームの代わりにソケット記述子が使用されます。低レベル関数を使用する利点はありますか?