我的情况是:c ++程序需要使用FIX协议与Java程序通信。
我的解决方案: - 消息传递:C ++程序以FIX格式发布文本,Java progrma可以使用该文本并使用quickfix / j进行解析。 - 套接字:在Java程序中设置FIX服务器,然后作为客户端的C ++程序可以连接到此套接字并使用quickfix将字节流写入其中。 Java程序使用quickfix / j来解析字节流。
我的问题: 1.套接字解决方案是否存在兼容性问题,即使用quickfix编码的字节流可以通过quickfix / j完全解码? 2.哪一个更好?缺点和优点。
提前致谢。
答案 0 :(得分:1)
FIX消息传递将是一个更简单的解决方案,而不是实现套接字。已经嵌入在quickfix库中的套接字通信。除非你做的事情非常不同,否则重新实现是没有用的。该引擎用于解密FIX消息。如果要修改库的任何套接字通信,可以更改库本身。无论如何你都有源代码。
如果尝试实现套接字,则可能必须在套接字周围编写包装器以将消息从C ++解析为Java,反之亦然。
您拥有Quickfix库的C ++版本。使用它作为启动器将FIX消息发送到Java接受器。您可能不必担心编写C ++服务器以在字节流中发送FIX消息。让底层库完成沟通而不是自己的工作。
答案 1 :(得分:0)
FIX可能更容易。但是如果选择套接字,请确保将C ++程序中的数据发送/接收转换为网络字节顺序。 (参见参考:htons()
,htonl()
ntohs()
和ntohl()
)。 Java总是使用网络字节顺序,因此您不必在那里进行任何转换。
答案 2 :(得分:0)
FIX是一种基于文本的协议,即您不必担心字节顺序。在线路级别,您所做的只是发送字符缓冲区。因此,如果您使用C ++程序编写基于java(quickfixj)的客户端/服务器,只要您遵守 FIX协议,就没有问题。
然后,正如DumbCoder上面指出的那样,如果你不是过分关注性能,你可以使用quickfix(C ++版本!)
答案 3 :(得分:0)
修复引擎的编写方式可以与其他方修复引擎进行通信。 双方的语言或平台无关紧要。 您只需将JAVA版本用于一个版本,将C ++版本用于另一方。