2

我的情况是:一个 c++ 程序需要与一个使用 FIX 协议的 Java 程序通信。

我的解决方案: - 消息:C++ 程序以 FIX 格式发布文本,Java 程序可以使用 quickfix/j 进行解析。- Socket:在Java程序中设置一个FIX服务器,然后作为客户端的C++程序可以连接到这个socket并使用quickfix将字节流写入其中。Java 程序使用 quickfix/j 来解析字节流。

我的问题: 1.socket方案是否存在兼容性问题,即用quickfix编码的字节流可以用quickfix/j完全解码?2. 哪个更好?缺点和优点。

提前致谢。

4

4 回答 4

1

FIX 消息传递将是一个更简单的解决方案,而不是实现套接字。quickfix 库中已经嵌入了套接字通信。除非您正在做一些非常不同的事情,否则重新实现是没有用的。该引擎旨在破译 FIX 消息。如果您想修改库的任何套接字通信,您可以更改库本身。反正你有源代码。

如果您尝试实现套接字,您可能必须在套接字周围编写包装器以解析从 C++ 到 Java 的消息,反之亦然。

您拥有 C++ 版本的 quickfix 库。使用它作为启动器将 FIX 消息发送到 Java 接受器。您可能不必担心编写 C++ 服务器以在字节流中发送 FIX 消息。让底层库而不是你自己来做通信的工作。

于 2010-10-11T10:26:54.797 回答
0

FIX 可能更容易。但是,如果您选择套接字,请确保将来自/在 C++ 程序上的数据发送/接收转换为/从网络字节顺序转换。(参见参考资料:htons()htonl() ntohs()ntohl())。Java 始终使用网络字节顺序,因此您不必在那里进行任何转换。

于 2010-10-11T10:28:38.207 回答
0

FIX 是基于文本的协议,即您不必担心字节顺序。在线路级别,您所做的只是发送字符缓冲区。因此,如果您在 C++ 程序中编写基于 java (quickfixj) 的客户端/服务器,只要您遵守FIX 协议,您就不会遇到任何问题。

再说一次,正如 DumbCoder 上面指出的那样,如果你不太关心性能,你可以使用 quickfix(C++ 版本!)

于 2010-10-11T13:32:28.230 回答
0

修复引擎的编写方式可以与其他方修复引擎进行通信。双方的语言或平台无关紧要。您可以简单地为一方使用 JAVA 版本,为另一方使用 C++ 版本。

于 2011-08-30T19:57:39.237 回答