gpt4 book ai didi

c++ - QuickFIX Initiator 无法发送消息

转载 作者:行者123 更新时间:2023-11-30 04:26:49 28 4
gpt4 key购买 nike

我一直在尝试使用 QuickFIX 来设置客户端。这是来自 QuickFIX 站点的示例,如下所示:

int main( int argc, char** argv ) {
try
{
if(argc < 2) return 1;
std::string fileName = argv[1];
FIX::SessionSettings settings(fileName);
Handler application;
FIX::FileStoreFactory storeFactory(settings);
FIX::FileLogFactory logFactory(settings);
FIX::SocketInitiator initiator(application, storeFactory, settings, logFactory /*optional*/);
initiator.start();
cout << "Started.\n";
initiator.block();
cout << "Stopped.\n";
return 0;
}
catch(FIX::ConfigError& e)
{
std::cout << e.what();
return 1;
}
}

然后我定义了实现 Application 类的 Handler。配置文件如下所示:

# default settings for sessions
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
SenderCompID=CLIENT
FileLogPath=.
FileStorePath=.
DataDictionary=D:\Program Files\quickfix\spec\FIX44.xml

# session definition
[SESSION]
# inherit ConnectionType, ReconnectInterval and SenderCompID from default
BeginString=FIX.4.4
TargetCompID=SERVER
HeartBtInt=30
SocketConnectPort=6523
SocketConnectHost=127.0.0.1
StartTime=8:00:00
EndTime=23:00:00

运行时,Handler::toAdminHandler::onCreate 被调用,然后是block 函数 block 。但是使用小型 FIX 应用程序 Mini-FIX 作为服务器,我无法从程序中获取任何传入消息。我试过打开两个 Mini-FIX,一个作为服务器,一个作为客户端,它们通信正常。我已确保 ID 和监听端口正确无误。那会是什么问题呢? Mini-FIX 应该收到 toAdmin 消息 8=FIX.4.4|9=55|35=5|34=1|49=CLIENT|52=20120702-08:29:25.334 |56=SERVER|10=115 由程序发送。开始时间和结束时间看起来很奇怪,但实际上调用了 toAdmin。所以我假设消息应该已经发送。

编辑 在我对配置文件和程序进行了一些更改后,我已经解决了这个问题,但我不太确定是什么原因造成的。考虑这个关闭。

最佳答案

你在问题​​中发布的 FIX 消息是一个 LOGOUT 消息(35=5),用这种消息发起连接是很奇怪的。我希望第一条消息是 LOGON (35=A)。尝试在每次登录时重置序列号,在配置中添加此行:

ResetOnLogon=Y

在 QuickFIX 发行版中还有一个小型服务器(执行器),您可以使用它来测试您的客户端。请在这里找到服务器:

http://www.quickfixengine.org/quickfix/doc/html/examples.html

关于c++ - QuickFIX Initiator 无法发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290443/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com