我一直在尝试使用 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;
}
}
我定义了Handler
实现Application
类。配置文件如下所示:
# 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::toAdmin
和Handler::onCreate
被调用,然后block
功能块。但是使用小型 FIX 应用程序 Mini-FIX 作为服务器,我无法从程序中获取任何传入消息。我试过打开两个 Mini-FIX,一个作为服务器,一个作为客户端,它们之间的通信很好。而且我已经确保 ID 和监听端口是正确的。那么会有什么问题呢?Mini-FIX 应该已经收到了程序发送的toAdmin
Message 。8=FIX.4.4|9=55|35=5|34=1|49=CLIENT|52=20120702-08:29:25.334|56=SERVER|10=115
开始时间和结束时间看起来很奇怪,但toAdmin
实际上被调用了。所以我认为消息应该已经发送了。
编辑 在对配置文件和程序进行了几次更改后,我已经解决了这个问题,但我不太确定是什么原因造成的。认为这是封闭的。