以下のリンクにある取引クライアント アプリケーションを使用して、VPS サーバーの 1 つとブローカー サーバーを接続しています。
http://www.quickfixn.org/tutorial/example-applications .
1 週間の苦労の末、大まかに言えば、やっとブローカーのサーバーに接続できました。
しかし、取引クライアント アプリケーションを実行すると、ログオン段階で次のエラーが発生します。
Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host
at QuickFix.SocketInitiatorThread.ReadSome(Byte[] buffer, Int32 timeoutMilliseconds)
in ... SoecketInitiatorThread.cs:line 170 ......
at QuickFix.SocketInitiatorThread.Read() in ... SoecketInitiatorThread.cs:line 80
......
取引クライアント アプリケーションはログオン試行を繰り返し続けていますが、同じエラー メッセージしか表示されません。
もちろん、私のようなこの QuickFix/n エンジンの初心者は、何が問題なのかを理解することができません。私が考えることができる調査の可能性のある領域の 1 つは、私も stunnel プログラム ( https://www.stunnel.org ) に非常に慣れていないため、私の stunnel 証明書が無効である可能性があるということです。Web サイトの指示に従って、ブローカーの IP アドレスを使用して pem 証明書を構成しただけですが、その目的について 100% 確信が持てません。
これが私が「stunnel.conf」ファイルに書いたものです:
[FIXORDER]
client = yes
accept = external ip of VPS : port eg.(10.160.103.65:22)
connect = broker ip address :port eg.(102.12.124.9:444)
以下は、stunnel プログラムからログに記録されたメッセージの一部です。
2014.11.26 17:23:44 LOG5[3348]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2014.11.26 17:23:48 LOG5[760]: Service [FIXORDER] accepted connection from x.xx.xx.xxx:xx
2014.11.26 17:23:48 LOG5[760]: s_connect: connected xxx.x.xx.xxx:xxx
2014.11.26 17:23:48 LOG5[760]: Service [FIXORDER] connected remote server from x.xx.xxx.xxx:xxx
2014.11.26 17:23:48 LOG3[760]: SSL_connect: Peer suddenly disconnected
2014.11.26 17:23:48 LOG5[760]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
組み込みの自己証明書アプリケーションを使用して、上記の「stunnel.conf」ファイルを使用して証明書を作成しました。
ご覧のとおり、私のような初心者にとっては複雑です。この問題に関する考えやヒントは本当にありがたいです。
よろしくお願いします。
敬具。
M
================================================== ================================ 2014/11/27更新
ここでは、xapi1492 からの提案に従ってデバッグ詳細を高く設定した後、Stunnel ログ ファイルからエラー ログを更新しています。
2014.11.27 01:10:46 LOG7[944]: Service [FIXORDER] started
2014.11.27 01:10:46 LOG5[944]: Service [FIXORDER] accepted connection from x.xxx.xxx.xxx:3667
2014.11.27 01:10:46 LOG6[944]: s_connect: connecting xx.x.xx.xx:9002
2014.11.27 01:10:46 LOG7[944]: s_connect: s_poll_wait xx.x.xx.102:9002: waiting 10 seconds
2014.11.27 01:10:46 LOG5[944]: s_connect: connected xx.x.xx.xx:9002
2014.11.27 01:10:46 LOG5[944]: Service [FIXORDER] connected remote server from x.xxx.xxx.xxx:3668
2014.11.27 01:10:46 LOG7[944]: Remote socket (FD=392) initialized
2014.11.27 01:10:46 LOG6[944]: SNI: sending servername: xxx.x.xx.xx
2014.11.27 01:10:46 LOG7[944]: SSL state (connect): before/connect initialization
2014.11.27 01:10:46 LOG7[944]: SSL state (connect): SSLv2/v3 write client hello A
2014.11.27 01:10:46 LOG3[944]: SSL_connect: Peer suddenly disconnected
2014.11.27 01:10:46 LOG5[944]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2014.11.27 01:10:46 LOG7[944]: Remote socket (FD=392) closed
2014.11.27 01:10:46 LOG7[944]: Local socket (FD=380) closed
2014.11.27 01:10:46 LOG7[944]: Service [FIXORDER] finished (0 left)
================================================== ================================ 2014/11/28更新
まだ答えを見つけるのが難しいので、QuickFix クライアント アプリケーションの構成ファイルを提供することにしました。
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=2
FileStorePath=store
FileLogPath=fixlog
StartTime=00:00:00
EndTime=00:00:00
UseDataDictionary=Y
DataDictionary=FIX44.xml
SocketConnectHost= xxx //my vps ip address
SocketConnectPort= xxx //my vps port //specified on stunnel
ResetOnLogon=Y
ResetOnLogout=Y
ResetOnDisconnect=Y
CheckLatency=N
LogonTimeout=10
# standard config elements
[SESSION]
BeginString=FIX.4.4
SenderCompID= xxx //my ID
Username= xxx //my username
Password= xxx //my password
TargetCompID=FIXORDER
HeartBtInt=30
SocketConnectHost= xxx //my vps ip address
SocketConnectPort= xxx //my vps port //specified on stunnel
DataDictionary=FIX44.xml
================================================== ================================ 2014/11/28更新
xpa1492 からの提案を受けて、Borker の IP アドレスとポート番号を SocketConnectHost と SocketConnectPort に配置しました。これは、QuickFix クライアント アプリケーションから取得したログ メッセージです。初期接続はできているようですが、なぜかログオン要求が通っていないのかもしれません。
<event> connecting to xxx (ip address of broker);
<event> connection succeeded;
<event> session reset: ResetOnLogon;
<event> session reset ResetSetNumFlag;
<outgoing> 8=Fix4.4 ...... ;
<event> initiated logon request;
<incoming> 8=FIX4.4 .....;
<event> received logout request;
<outgoing> 8=FIX4.4 .....;
<event> sending logout response;
ブローカーがログアウト要求を送信したときの受信メッセージの詳細。
<incoming> 8=FIX4.4 9=63 35=5 34=1 49=FIXORDER 52=20141128-02:09:00.495 56=TargetCompID(from acceptor standing point of view=SenderID for me) 10=171