0

現在、ZMQ でバイナリ メッセージを受信する場合、次の手順を実行する必要があります。

int maxMessageSize = 1024*500*16*                            
var buffer = new byte[maxMessageSize];
var messageLength = socket.Receive(buffer);
var message = new ArraySegment<byte>(buffer, 0, messageLength).ToArray();

これには大きな問題があります。メッセージの最大サイズを事前に知っておく必要がありますが、これはわかりません。メッセージのサイズは 1KB から 20MB までです。バッファサイズを事前定義せずにメッセージを完全に受信し、それを配列にトリミングする方法はありますか?

4

1 に答える 1

0

メッセージを 2 つの部分に分けて送信するように送信者をコーディングできます。

最初の部分のバッファ サイズ ( int) は で送信できますsocket.SendMore()

バッファ自体の 2 番目の部分は通常のsocket.Send().

maxMessageSizeを最初に設定しsocket.Receive()、次にsocket.Receive()正しいバッファ サイズで再度設定します。

于 2014-10-15T10:38:35.537 に答える