【问题标题】:quickfix/n error:'An Existing was forcibly closed the remote host at Quickfix.SocketInitiatorThread.Read()'quickfix/n 错误:'An Existing 在 Quickfix.SocketInitiatorThread.Read() 处被强制关闭远程主机'
【发布时间】:2026-02-12 03:15:01
【问题描述】:

我已经使用来自这个http://www.quickfixn.org/download 站点的QuickFIX/n is v1.4.0 创建了一个修复应用程序。 当我使用两台 PC 作为服务器和客户端执行应用程序时,它给出了一个错误:

An Existing 在远程主机被强行关闭 Quickfix.SocketInitiatorThread.Read()

并且日志详细信息是:

20130814-23:23:47.828 : Created session
20130814-23:24:07.531 : FIX.4.4:Server->Client Socket Reader 6044116 accepting session FIX.4.4:Server->Client from 192.168.1.109:3300
20130814-23:24:07.531 : FIX.4.4:Server->Client Acceptor heartbeat set to 0 seconds
20130814-23:24:07.781 : Session reset: ResetOnLogon
20130814-23:24:07.796 : Sending time accuracy problem
20130814-23:24:07.812 : Message 1 Rejected: 10
20130814-23:24:07.812 : Verify failed: Tried to send a reject while not logged on
20130814-23:24:07.812 : Session FIX.4.4:Server->Client disconnecting: Verify failed: Tried to send a reject while not logged on
20130814-23:24:07.812 : Session reset: ResetOnDisconnect

我们已尝试解决“发送时间准确性问题”,即时间戳错误。我们将客户端和服务器机器上的时间设置为相同并尝试过,但没有成功。 我们还在配置文件中设置了MaxLatencyCheckLatency 的值。我们设置了MaxLatency=120CheckLatency=Y,但没有解决问题。请你给我解决这个问题的方法。

实际的日志消息是:

20130816-05:44:37.875 : 8=FIX.4.49=6735=A34=149=Client52=20130816-23:12:39.56256=Server98=0108=3010=223
20130816-05:44:39.437 : 8=FIX.4.49=6735=A34=349=Client52=20130816-23:12:41.40656=Server98=0108=3010=215
20130816-05:44:40.468 : 8=FIX.4.49=6735=A34=449=Client52=20130816-23:12:42.40656=Server98=0108=3010=217
20130816-06:46:02.843 : 8=FIX.4.49=7335=A34=149=Client52=20130817-00:13:43.04656=Server98=0108=30141=Y10=254
20130816-06:46:04.515 : 8=FIX.4.49=7335=A34=149=Client52=20130817-00:13:45.89056=Server98=0108=30141=Y10=007
20130816-06:46:05.515 : 8=FIX.4.49=7335=A34=149=Client52=20130817-00:13:46.89056=Server98=0108=30141=Y10=008
20130816-06:46:10.359 : 8=FIX.4.49=7335=A34=149=Client52=20130817-00:13:51.62556=Server98=0108=30141=Y10=000

请向我发送建议和设置以正确运行此应用程序。

【问题讨论】:

  • 您能否包含正在交换的实际 FIX 消息?
  • 你试过CheckLatency=N吗?
  • 是的。我们检查了不同的值。没有任何效果。
  • 可能值得包括配置。您在问题中同时用于客户端和服务器。
  • 客户端配置文件为 [DEFAULT] FileStorePath=store FileLogPath=log ConnectionType=initiator ReconnectInterval=60 SenderCompID=Client [SESSION] BeginString=FIX.4.4 TargetCompID=Executor StartTime=00:00:00 EndTime =00:00:00 HeartBtInt=30 SocketConnectPort=5001 SocketConnectHost=192.168.1.109 DataDictionary=FIX44.xml UseDataDictionary=Y #HttpAcceptPort=9911 LogoutTimeout=5 ResetOnLogon=Y

标签: c# quickfix fix-protocol


【解决方案1】:

看起来有人在 2 天前回答了您的 identical question,正确地识别出 CheckLatency 设置无论出于何种原因在 QuickFIX/n 中都是硬编码的。也就是说,CheckLatency=YCheckLatency=N 在你的配置文件中并不重要,因为在加载配置时会被忽略。

同样,正如另一张海报所指出的,您可以在 QuickFIX/n 源代码中修复此问题并重建程序集。

这里的另一个选项是在启动连接之前在您的代码中将SessionCheckLatency 属性更改为false。

【讨论】:

  • 实际上那个解决方案并没有解决问题。也检查了时间戳错误。但它没有工作。还有其他解决方案吗??
  • 如果日志仍然显示Sending time accuracy problem,那么就是的问题。因此,您的解决方案是修复服务器/客户端上的时钟同步/时区,或者告诉 QuickFIX 不要检查它们,这必须通过设置 [Session].CheckLatency = false 在代码中完成。
  • 感谢您的帮助。问题已解决。实际上错误在源代码中。非常感谢。
最近更新 更多