/ / tcpsocket上のデータがあるか確認します - julia-lang

tcpsocket-julia-langのデータがないか確認してください

データがあるまでブロックせずに、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