データがあるまでブロックせずに、Base.TCPSocketにデータがあるかどうかを確認する方法はありますか。
何かのようなもの 選択する timeout-structの両方の値は0に設定されています。
私を向けてくれたsbrombergerに感謝します nb_available これは紙の上で私が欲しいものと全く同じです。
このストリームまたはバッファからの読み込みがブロックされる前に読み込み可能なバイト数を返します。
残念ながらこれは役に立ちません。例:
左側でそれは0ではなく8バイトを言うべきです。
回答:
回答№1は0@ tasos-papastylianouのリンクされたソリューションをフォローアップすると、 @async eof(c)
サーバー上で nb_available
更新する。その時点で正しい値が提供され、それ以降の書き込みでは更新されません。 nb_available
なし read
。これが例です(接続がすでに確立されていると仮定します)
client> write(c, 12.5)
server> nb_available(c)
0
server> @async eof(c)
Task (done) @0x0000000123b7f850
server> nb_available(c)
8
client> write(c, 12.5)
client> write(c, 22.5)
server> nb_available(c)
8
server> @async eof(c)
Task (done) @0x0000000123b7c010
server> nb_available(c)
8
server> read(c,8)
8-element Array{UInt8,1}:
0x00
0x00
0x00
0x00
0x00
0x80
0x36
0x40
server> nb_available(c)
0
server> @async eof(c)
Task (done) @0x0000000123b7c010
server> nb_available(c)
16