Я пытаюсь отправить / получить составной тип по TCP. Чтобы сделать это, я сначала создаю часть слушателя:
using Sockets
# my-compiste-type
struct Signal
min::Array{Float32,1}
max::Array{Float32,1}
end
listener = listen(12345)
receiver = accept(listener)
read!(receiver, Ref()) # problem !!!
С другой стороны, код части отправителя:
using Sockets
# my-compiste-type
struct Signal
min::Array{Float32,1}
max::Array{Float32,1}
end
s = Signal(rand(0:1, 10), rand(0:1, 10)) # data to send
client = connect(12345) # connecting to server side
write(client, Ref(s))
Теперь проблема возникает, когда я пытаюсь прочитать read!(receiver, Ref())
Если я пишу read!(receiver, Ref(Signal)())
, я получаю ошибку сегментации, и программа завершается. И если я пишу read!(receiver, Ref(typeof(Signal)())
, я получаю ошибки.
Как правильно отправлять составные типы данных от отправителя к получателю?
Я также нашел похожий вопрос на странице дискурса Джулии , но операция решает проблему с UDPSocket. Я тоже пытался, но он использует reinterpret
функцию. И функция переинтерпретации не преобразует тип данных Signal в UInt или другие типы.
Не могли бы вы помочь, пожалуйста?
BR
ps Кстати, я использую Julia версии 1.0.3.