0

サーバーとクライアントが名前付きパイプを使用して通信する単純なサーバークライアントプログラムを作成しました。すべてが正常に機能していますが、簡単な質問があります。クライアント部分で、サーバーに送信されるメッセージをこの中で割り当てます。方法char*msg = malloc(sizeof(char)); 次に、gets(msg)を使用してユーザーから読み取ります。最後に、iamはwrite()関数を使用してメッセージをパイプに書き込みます。サーバー部分では、mallocを使用してバッファーも割り当てますが、read()関数の3番目の引数がどうあるべきかわかりません...マニュアルページから理解できるので、readの3番目の引数はバイト数です。読みたいのですが、これはクライアントが送信しているメッセージのstrlenであると思います。問題は、読む前にiamがこれを知ることができないことです。これを機能させる方法はありますか、またはサーバー部分のバッファーに基本的にMAX_SIZEを使用する必要があります。よろしくお願いします。:)

4

1 に答える 1

0

唯一の可能な解決策は、上記のコメントのonon15から言及されていることです。「バッファを送信する前に、予想されるバッファの長さを送信してください」。

Iamは、回答済みの質問をマークするための回答としてこれを書いています。

onon15に感謝します!

于 2012-11-03T03:13:56.480 に答える