1

親プロセスと n 個の子プロセスがあり、待機しているため、ネットワークから何かを受信します。問題は、子プロセスがネットワークから受信したすべてのメッセージについて、メッセージの内容を父親に伝える必要があることです。パイプを作成しようとすると、または父親と子供の間のソケットペアの場合、父親はメッセージがどこで終わり、別のメッセージがどこで始まるかわかりません。助けてもらえますか?

4

2 に答える 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 に答える