QuickFix的SSL问题

QuickFix是FIX协议的一个开源引擎,有多中语言的实现:

    • Java: QuickFIX/J
    • C#: QuickFIX/N
    • C++: Python和Ruby的接口基于C++的版本

 

最近在学习FIX和QuickFIX,碰到一个问题,broker提供的Demo是基于QuickFIX/J的,可以正常工作。我使用同样的逻辑,用C#和Python代码重新实现,却每次发送登录请求LOGON之后,链接就会被对端断开:Socket Error: Connection reset by peer.

我花了十几个小时去调试,对比Python、C#、Java版本程序发出的消息的异同,还使用MiniFIX作为客户端发送Logon,发现多个版本发送的都是相同的Message,但惟有Java版的在工作。最后迫于无奈,使用WireShark抓包,发现Java版发送的TCP包内容是加密的,而其他版本发送的都是明文。终于找到问题:

[SESSION]
BeginString=FIX.4.4
#...
SocketUseSSL=Y

 

目前QuickFIX的多个版本中,Java实现了SSL的支持,而C#和C++版本均未实现。定位到了问题,解决方法也容易:使用stunnel。可以参考:https://waiseekweng.wordpress.com/2014/09/08/configure-for-fixn/

posted @ 2015-08-11 13:28  li.dp  阅读(2012)  评论(0编辑  收藏  举报