微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ZeroMQ RADIO 套接字发送没有设置组的选项

如何解决ZeroMQ RADIO 套接字发送没有设置组的选项

我正在尝试为 ZeroMQ 实现我自己的 Swift 包装器,并支持 RAdiodisH 等草稿方法。我已经能够成功实现用于接收数据的 disH 包装器,但无法实现用于发送数据的 RAdio 包装器。从我在这里看到的关于 pyzmq 的文档来看,

pyzmq send function

在我看来,pyzmq 库有一个内置函数,允许直接通过组发送消息。但是,在查看 zmq.h 的发送函数时,我看不到任何向群组发送消息的方法。我可以使用此功能发送消息而不会出现任何错误,但是在菜肴脚本中没有收到该消息,因为我发送的内容没有附加组。

有没有办法通过 RAdiogroup 套接字发送数据?

我还研究了如果我使用 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“有没有办法通过 RADIOgroup 套接字发送数据?”

当使用 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 举报,一经查实,本站将立刻删除。