0

我必须在两个不同的操作系统上运行我的启动器和接受器。我看到一个奇怪的套接字断开问题。以下是我尝试过的不同场景。我正在使用 C++/Quickfix。我在 Debian/Ubuntu 上使用该设置已经很长时间了,没有问题。使用 CentOS 和 Ubuntu 建立连接是有问题的。问题的详细信息:-

场景一(问题场景)

我的启动器在 CentOS 的 Machine-1 上运行

我的接受器在 Ubuntu 的 Machine-2 上运行

当我尝试连接时,出现以下错误:-

<20121213-03:57:41.619, FIX.4.2:ft-trade->ES, event>
  (Connecting to 10.0.0.40 on port 31209)
<20121213-03:57:41.620, FIX.4.2:ft-trade->ES, outgoing>
  (8=FIX.4.2 9=77 35=A 34=1 49=ft-trade 52=20121213-03:57:41.620 56=ES 98=0 108=30 141=Y 10=230 )
<20121213-03:57:41.620, FIX.4.2:ft-trade->ES, event>
  (Initiated logon request)
<20121213-03:57:41.621, FIX.4.2:ft-trade->ES, event>
  (Socket Error: Connection reset by peer.)
<20121213-03:57:41.621, FIX.4.2:ft-trade->ES, event>
  (Disconnecting)

请不要通过上述数据包中的校验和字段,因为我必须在此处发布之前更改发件人/目标 compids。

场景 2(工作正常)

我将相同的启动器代码带到了不同的 Machine-3。现在都是Ubuntu。

从 Machine-3,我可以成功连接到 Machine-2。

这种情况没有问题,所以我的设置文件等都很好。

场景 3(工作正常)

我将相同的接受器代码带到 Machine-1。现在两个 CentOS

再次,我可以成功连接。

我还检查了是否存在与防火墙相关的问题。但是没有问题,因为从 Machine-1 到 Machine-2 的 telnet 是成功的。

据我了解,当对等方在打开套接字后断开或关闭套接字时,这是一个 TCP/IP 错误。但是消息进来的方式,它不确定错误是由于 TCP/IP 还是 quickfix。我看不出 TCP/IP 握手问题的任何原因,因为 TELNET 也可以正常工作。

4

0 回答 0