问题描述
我们当前想要一种在带有套接字的设备之间传递数据的方法,因此我们在服务器端通过Python脚本使用了ZeroMQ,似乎一切正常。我们的协议地址当前为epgm://224.0.0.1:28650
,但是,我们需要与python脚本进行通信,因此我们决定使用此Swift library。当前,我直接在此存储库中使用该库,并且似乎正在使用ZeroMQ库版本4.2和修补程序级别2。然后,使用this function,我正在检查库是否具有.pgm协议,我的应用程序报告该协议不支持该库。
尽管该库具有检查其是否支持某种协议的功能,但我无法在Google上找到有关如何使该库支持pgm协议的任何信息。
浏览原始的swift库之后,我能够找到zmq.h,据我所知,它是ZMQ库所使用的swift库。因此,发现这一点后,我尝试使用“ --with-pgm”构建选项重新编译libzmq,该选项用于解决pyzmq上的问题。但是,我对此并没有多大运气,甚至不确定这是我应该如何进行的。我目前不知所措,任何帮助将不胜感激。谢谢。
这是我们当前正在使用的Swift代码:
import SwiftyZeroMQ5
class communicationClass{
var context: SwiftyZeroMQ.Context?;
var subscriber: SwiftyZeroMQ5.SwiftyZeroMQ.socket?;
init(){
do{
context = try SwiftyZeroMQ.Context();
subscriber = try context?.socket(.subscribe);
try subscriber?.connect("epgm://224.0.0.1:28650");
}
catch{
print("error - \(error)")
}
}
}
这是它输出的错误:error - Protocol not supported
解决方法
Q :“为什么SwiftyZeroMQ不支持
epgm://
和pgm://
传输类?”
文档清晰无误:
按现状程序包确实声明了状态,它提供了 not 支持 epgm://
-截至2020-10的运输班。
下一步:
尝试使用pgm://
-transport-class而不是epgm://
,如果失败,请在程序包维护者的事件管理队列中提出问题,因为他们认为它应该起作用。 / p>
因此,由于缺乏EPGM和PGM的支持,我们决定将原始UDP与ZeroMQ的碟/无线电草稿API结合使用。这些API草案本来可以替代EPGM和PGM,但它们仍在开发中。这些API适用于我们的用例,但可能会因您的用例而异。