クライアントソケットから新しいデータを読み取る関数を使用してinput_line
いますが、ストリームから読み取るものが残っていない場合、関数はスレッドを停止します。私の目標は、スレッドを停止する代わりに、読み取るものが残っていないときに空の文字列 (つまり "") を返す関数を作成することです。
input_line
または他の方法を使用して、この関数をどのように構築しますか?
ストリームから読み取るものが残っていない場合、関数はスレッドを停止します
いいえ、そうではありません。読み取り可能なデータがない間、スレッドをブロックします。送信者は、1 分、1 時間、または 1 日でさらに多くのデータを送信しようとしている可能性があります。
「ストリームから読み取るものが残っていない」という状態は、ピアが接続を閉じたことを意味します。この場合、ブロッキングは発生せず、ある種のストリームの終わりの表示が得られます。
私の目標は、スレッドを停止する代わりに、読み取るものが残っていないときに空の文字列 (つまり "") を返す関数を作成することです。
次に、非ブロッキング モードを使用するかMSG_PEEK
、API 経由で使用できる場合は使用する必要があります。