イニシエーターとアクセプターを 2 つの異なる OS で実行する必要があります。ソケットの切断という奇妙な問題が発生しています。以下は、私が試したさまざまなシナリオです。C++/Quickfix を使用しています。Debian/Ubuntu で長い間セットアップを使用してきましたが、問題はありません。CentOS と Ubuntu の接続確立で問題が発生しています。問題の詳細:-
シナリオ-1 (問題シナリオ)
私のイニシエータは、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)
ここに投稿する前に送信者/ターゲットの compid を変更する必要があったため、上記のパケットのチェックサム フィールドを使用しないでください。
シナリオ 2 (正常に動作)
同じイニシエータ コードを別の Machine-3 に使用しました。現在、両方のUbuntu。
Machine-3 から Machine-2 に正常に接続できます。
このシナリオは問題がなかったので、設定ファイルなどはすべて問題ありません。
シナリオ-3 (正常に動作)
同じアクセプター コードを Machine-1 に使用しました。両方の CentOS が現在
今回も無事に接続できました。
また、ファイアウォール関連の問題があるかどうかも確認しました。しかし、Machine-1 から Machine-2 への telnet は成功しているため、問題はありません。
私が理解しているように、これはピアが開いた後にソケットを切断または閉じるときの TCP/IP エラーです。しかし、メッセージが入ってくる方法は、エラーが TCP/IP によるものなのか、クイックフィックスによるものなのかわかりません。TELNET も正常に動作するため、TCP/IP ハンドシェークの問題の原因はわかりません。