Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修复通信模型-消息传递或套接字 >强:>我的情况是>:C++程序需要用FIX协议与java程序进行对话。p>_Java_C++_Quickfix - Fatal编程技术网

修复通信模型-消息传递或套接字 >强:>我的情况是>:C++程序需要用FIX协议与java程序进行对话。p>

修复通信模型-消息传递或套接字 >强:>我的情况是>:C++程序需要用FIX协议与java程序进行对话。p>,java,c++,quickfix,Java,C++,Quickfix,我的解决方案: 消息传递:C++程序发布一个固定格式的文本,java程序可以使用它,并用QuyFix/J解析。 Socket:在java程序中安装一个固定服务器,C++程序作为客户端,可以连接到这个套接字,并使用QuxFIX将字节流写入其中。Java程序使用quickfix/j解析字节流 我的问题: 1.套接字解决方案是否存在兼容性问题,即使用quickfix编码的字节流可以被quickfix/j完全解码? 2.哪一个更好?利与弊 提前感谢。修复消息将是一个更简单的解决方案,而不是实现套接字。q

我的解决方案: 消息传递:C++程序发布一个固定格式的文本,java程序可以使用它,并用QuyFix/J解析。 Socket:在java程序中安装一个固定服务器,C++程序作为客户端,可以连接到这个套接字,并使用QuxFIX将字节流写入其中。Java程序使用quickfix/j解析字节流

我的问题: 1.套接字解决方案是否存在兼容性问题,即使用quickfix编码的字节流可以被quickfix/j完全解码? 2.哪一个更好?利与弊


提前感谢。

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

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


你有C++版本的QuestFIX库。使用它作为启动器将修复消息发送到Java接受器。您可能不必担心编写一个C++服务器来在ByTeScript中发送固定消息。让底层库来完成通信工作,而不是自己来完成。

修复可能更容易。但如果选择套接字,请确保将C++中的//ReV数据转换为/来自网络字节顺序。(参见参考资料:
htons()
htonl()
ntohs()
,以及
ntohl()
)。Java总是使用网络字节顺序,因此您不必在那里进行任何转换。

FIX是一种基于文本的协议,也就是说,您不必担心字节顺序。在有线级别,您所做的只是发送字符缓冲区。因此,如果你在C++程序中编写一个基于java(QuiFixJ)的客户机/服务器,只要你遵守<强>修复协议< /强>,你就不会有问题。

那么,正如DumbCoder上面所指出的,如果你不太关心性能,你可以使用QuiFoxC++(C++版本)< /P> < P>修复引擎是用与其他FIX FIX引擎通信的方式编写的。 双方的语言或平台并不重要。


你可以简单地使用java版本来为另一方提供C++和C++版本。Quickfix库用户不必担心这一点。非常感谢您的回复。我也更喜欢固定消息。现在C++程序将文本消息发送到队列,java程序从队列中消耗消息,使用该文本消息构造消息。这是正确的解决方案吗?如果你不想使用C++的QueFixFrimeBuffic,那就好了。您的队列是为多线程设计的吗?Quickfix负责同时跨消息发送多个会话。排队可能需要一段时间才能发送消息,修复转换速度很慢,因此如果您不担心延迟,那么使用队列可能不是问题。发送文本消息,然后转换是一个两步过程。在第一个瞬间,使用你的数据并创建一个修复消息会更快,因为你的最终目标是只创建一个固定消息。我的队列设计得很好,多线程,我们在QC++中使用QueFixEdg+,QuikFix/J java。我的担心和你一样,短信解决方案似乎是两个步骤的过程,这是间接的。我想知道quickfix或quickfix/j是否有内置的消息传递机制?如果使用多个会话,是否存在任何顺序错误的问题,因为消息顺序对我们来说非常重要?更好的方法是创建写入文件的进程,创建修复消息并将其发送给接收者。在创建消息后立即发送消息是更好的选择,这是没有意义的。如果您按照希望发送的顺序发送消息,则顺序错误将是Quickfix问题,而不是您的应用程序问题。QueFixt使用C++和java的线程套接字。它使用java java C++语言和MaLa套接字,根据平台的不同,非常感谢你的回复,然后我的担心就不是问题了。试试这个链接作为参考:你可以尝试在C++和Java项目中设置你的配置文件,以便两个程序可以通信:在你的情况下,在FixC++项目CONFIG中,在Java(QuickFIX/J)项目配置中将TargetCompID名称设置为SenderCompID名称,反之亦然。