如何解决ZeroMQ RADIO 套接字发送没有设置组的选项
我正在尝试为 ZeroMQ 实现我自己的 Swift 包装器,并支持 RAdio
和 disH
等草稿方法。我已经能够成功实现用于接收数据的 disH
包装器,但无法实现用于发送数据的 RAdio
包装器。从我在这里看到的关于 pyzmq 的文档来看,
在我看来,pyzmq
库有一个内置函数,允许直接通过组发送消息。但是,在查看 zmq.h 的发送函数时,我看不到任何向群组发送消息的方法。我可以使用此功能发送消息而不会出现任何错误,但是在菜肴脚本中没有收到该消息,因为我发送的内容没有附加组。
有没有办法通过 RAdio
的 group
套接字发送数据?
我还研究了如果我使用 zmq_msg_t
会如何实现,因为它有一种附加群组的方式。所以,我在 Swift 中使用了这个函数:
public func sendRadioMessage(group: String,data: NSData) throws{
var msg = zmq_msg_t.init();
var result : Int32;
let flags: SocketSendRecvOption = .none
result = zmq_msg_init_data(&msg,UnsafeMutableRawPointer(mutating: data.bytes),data.length,nil,nil);
if (result == -1) { throw ZeroMQError.last }
defer {
// Clean up message on scope exit
zmq_msg_close(&msg)
}
result = zmq_msg_set_group(&msg,group);
if (result == -1) { throw ZeroMQError.last }
result = zmq_msg_send(&msg,self.handle,flags.rawValue);
if (result == -1) { throw ZeroMQError.last }
print("sent \(result) bytes")
}
来自我之前的question.
然而,虽然 zmq_msg_send()
函数确实返回了正确数量的发送字节,但我的 python 脚本似乎没有接收到数据。我知道我的 python 脚本有效,因为我使用了 pyzmq
示例中的 this python script 的稍微修改版本。
解决方法
Q :“有没有办法通过 RADIO
的 group
套接字发送数据?”
当使用 DRAFT 原型时(其中 SuT 仍处于持续开发的流程中,任何下一级派生工件,意味着任何派生语言包装器或绑定原型),人们必须接受某种程度的不适,而不是稳定的 API,net 拥有成熟的 API 文档,我们必须成为一名侦探:
zmq_msg_set_group ( zmq_msg_t *msg,const char *group );
本机 API(后来变成了一个看起来更像 Python 的模块)呈现了这个程序步骤(后来可能变成了一个 pyzmq.Socket.send()
方法的调用接口内的另一个参数){{3} }.
继续关注,永远不要放弃我们拥有唯一来源的目标,即本机 API
:o)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。