【发布时间】:2019-10-17 09:20:43
【问题描述】:
我正在尝试通过 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)()),我就会出错。
将复合数据类型从发送方发送到接收方的正确方法是什么?
我还在Julia discourse page 上发现了一个类似的问题,但 o.p.解决了 UDPSocket 的问题。我也试过了,但它使用reinterpret 函数。并且 reinterpret 函数不会将 Signal 数据类型转换为 UInt 或其他类型。
你能帮忙吗?
B.R.
附言顺便说一句,我使用的是 Julia 版本 1.0.3。
【问题讨论】:
-
我使用的是 Julia 版本 1.0.3。文档中的方法需要 1.1; 3 分中的 2 分。
-
您需要的序列化函数在 1.0.3 中可用。 (1.1中增加了对文件名的操作)
-
非常感谢。现在解决了:)
-
你能写出你的解决方案吗?所以我可以给你一个赞成票:))
标签: types tcp type-conversion julia