我一直在尝试使用QuickFIX来设置客户端。这是从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
消息8=FIX.4.4|9=55|35=5|34=1|49=CLIENT|52=20120702-08:29:25.334|56=SERVER|10=115
。 开始时间和结束时间似乎很奇怪,但实际上调用了toAdmin
。所以我认为这个消息应该已经发送了。
编辑 我解决了这个问题已经后,我做了一些改动的配置文件和程序,但我不太清楚什么原因造成的。考虑这个关闭。
什么似乎奇怪的开始和结束时间? –
@MD-Tech我假设在'starttime'和'endtime'之间的时间内启动器将被启动。但是,当时间超出'starttime'和'endtime'范围时,'toAdmin'似乎只能被调用。 。所有使用UTC时间。 – WiSaGaN
要使用UTC时间,您必须将此行放在配置文件中:UseLocalTime = N – stexcec