QuickFIX/n解析FIX消息报错:误将起始标识识别为IX.4.4
关于QuickFIX/n解析FIX消息时首字节丢失的问题
环境配置
- QuickFIX/n 1.7.0 二进制包
- .NET Core 8 应用
- 网络拓扑:QuickFIX/n发起端连接本地代理(127.0.0.1:15068),代理转发请求至127.0.0.1:15067的交易对手方
问题描述
发送登录消息后不久,QuickFIX/n抛出会话断开错误:
会话FIX.4.4:my_fix_initiator->broker_fix断开连接:
QuickFix.MessageParseError: 无法解析消息:解析消息(8=FIX.4.4...)时在位置(3)出错 ---> System.FormatException: 输入字符串'IX.4.49'格式不正确。
从错误信息可判断,QuickFIX/n错误地将消息起始部分识别为IX.4.4而非正确的8=FIX.4.4。
已验证内容
- 代理日志记录的返回给QuickFIX/n的消息字节完整有效,十六进制及对应ASCII如下:
HEX: 38 3D 46 49 58 2E 34 2E 34 01 39 3D 31 30 35 01 33 35 3D 41 01 ... ASCII: 8=FIX.4.49=10535=A... - 消息包含正确的SOH分隔符(\x01)和校验和,格式完全符合FIX规范。
客户端配置文件(client.cfg)
[DEFAULT] ConnectionType=initiator SenderCompID=my_fix_initiator TargetCompID=broker_fix SocketConnectHost=127.0.0.1 SocketConnectPort=15068 BeginString=FIX.4.4 UseDataDictionary=Y DataDictionary=FIX44.xml ResetOnLogon=Y ResetSeqNumFlag=Y HeartBtInt=30 ValidateFields=N ValidateFieldsOutOfOrder=N LogHeartbeats=Y LogIncomingMessages=Y LogOutgoingMessages=Y
疑问
- 为何QuickFIX/n会错误识别消息起始部分?
- QuickFIX/n的Socket处理是否存在已知Bug或边缘情况,会导致首字节丢失或损坏?
内容的提问来源于stack exchange,提问作者user3893355
相关产品推荐
相关产品推荐

