Як я можу перевірити, чи є дані на 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