0

クライアントソケットから新しいデータを読み取る関数を使用してinput_lineいますが、ストリームから読み取るものが残っていない場合、関数はスレッドを停止します。私の目標は、スレッドを停止する代わりに、読み取るものが残っていないときに空の文字列 (つまり "") を返す関数を作成することです。

input_lineまたは他の方法を使用して、この関数をどのように構築しますか?

4

3 に答える 3

2

ストリームから読み取るものが残っていない場合、関数はスレッドを停止します

いいえ、そうではありません。読み取り可能なデータがない、スレッドをブロックします。送信者は、1 分、1 時間、または 1 日でさらに多くのデータを送信しようとしている可能性があります。

「ストリームから読み取るものが残っていない」という状態は、ピアが接続を閉じたことを意味します。この場合、ブロッキングは発生せず、ある種のストリームの終わりの表示が得られます。

私の目標は、スレッドを停止する代わりに、読み取るものが残っていないときに空の文字列 (つまり "") を返す関数を作成することです。

次に、非ブロッキング モードを使用するかMSG_PEEK、API 経由で使用できる場合は使用する必要があります。

于 2013-05-27T09:57:51.097 に答える