親プロセスと n 個の子プロセスがあり、待機しているため、ネットワークから何かを受信します。問題は、子プロセスがネットワークから受信したすべてのメッセージについて、メッセージの内容を父親に伝える必要があることです。パイプを作成しようとすると、または父親と子供の間のソケットペアの場合、父親はメッセージがどこで終わり、別のメッセージがどこで始まるかわかりません。助けてもらえますか?
2 に答える
2
ストリーム指向のパイプ/ソケット ペアを使用しています。したがって、メッセージの境界が失われます。
メッセージ境界を維持するために、データグラム指向のソケットを使用します。
データグラムベースの unix ソケットとソケットペアの詳細については、mapage unix(7)を参照してください。
あなたに適した機能があります:
socket(AF_UNIX, SOCK_DGRAM, 0);
socketpair(AF_UNIX, SOCK_DGRAM, 0, int *sv);
于 2013-01-07T11:06:24.070 に答える
1
パイプまたはソケットペアに書き込む前に、区切り文字を使用して、すべての子が父親に送信する前にその区切り文字をメッセージに追加できるようにします
于 2013-01-07T10:51:17.423 に答える