/ / Перевірте, якщо дані про tcpsocket - julia-lang

Перевірте, чи дані на tcpsocket - julia-lang

Як я можу перевірити, чи є дані на Base.TCPSocket, не блокуючи, поки не з'являться дані.

Щось на зразок вибрати де обидва значення timeout-struct задані рівними 0.

Завдяки sbromberger, який вказав на мене nb_available що на папері робить саме те, що я хочу.

Повертає кількість доступних для читання байтів, перш ніж прочитати з цього потоку або буфера.

На жаль, це не корисно. Приклад:

введіть опис зображення тут

З лівого боку слід сказати, що 8 байт не 0.

Відповіді:

0 для відповіді № 1

Щоб відповісти на рішення, пов'язане з @ tasos-papastylianou, здається, що @async eof(c) викликатимуть на сервері nb_available оновити. Зверніть увагу, що він надасть правильне значення в цей момент часу, і наступні записи не будуть оновлюватися nb_available без a 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