0

ストリームから大量のデータを読み取る必要があります。データの長さは送信前にはわかりません。ストリームには特別な「終了文字」はありません。問題: ストリームに対して複数のデータ イベントを取得しましたが、データの処理を開始するタイミングがわかりません。

TCPストリームにデータが残っているかどうかを確認できる他のプログラミング言語のパターンを知っています(たとえば、NSInputStream-objectsの「hasBytesAvailable」のようなものがあるiOSおよびobjective-C)。

node.jsに似たようなものはありますか? または、node.jsで問題を解決するにはどうすればよいですか?

4

2 に答える 2

0

データの長さを事前に知らなくても、EOF文字がなく、ソケットが開いたままの場合は、データの構造プロパティを利用する必要があります。つまり、データをその場で解析する必要があります。もちろん、データ既知の構造特性(たとえば、定義されたビデオ形式)を持っていることを前提としています。そうでない場合は、問題が単純に解決できないか、「XY問題」が発生します(実際の問​​題を完全に定義せずに、解決策を時期尚早に定義しました)。

于 2012-09-21T14:43:04.137 に答える
0

あなたが参照する方法は、あなたが言うことをしません。ブロックせずに読み取ることができるデータの量のみを示します。まったく同じではありません。

ストリームの最後まで読み取る唯一の方法は、ストリームの最後まで読み取ることです。完了するとEOSが手に入ります。

実際には、ネットワーク ストリームからの「データの長さ」などというものはありません。ピアが永久にデータを書き続ける可能性があると考えてください。

于 2012-09-21T08:47:46.640 に答える