Я использую торговое клиентское приложение по этой ссылке ниже, чтобы установить соединение между одним из серверов VPS-сервера и брокеров.QuickFIX/n - Инициатор неоднократно бросает ошибки во время фазы входа
http://www.quickfixn.org/tutorial/example-applications.
После одной недели борьбы я смогла подключиться к серверу брокера, наконец, свободно.
Однако, когда я запускаю торговли клиентское приложение, на этапе входа в систему я получаю эту ошибки:
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, я действительно не могу понять, что пошло не так. Одна из возможных областей расследования, о которых я могу думать, это то, что мой сертификат stunnel может быть недействительным, поскольку я также очень новичок в программе stunnel (https://www.stunnel.org). Я только следил за инструкцией с веб-сайта, чтобы настроить сертификат pem с IP-адресом брокера, но я не уверен на 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
========================================= ======================================== Обновлено 27/11/2014
Здесь я обновляю свой журнал ошибок из файла журнала Stunnel после того, как установил debug verbose high, принимая предложение от xapi1492.
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)
=========================================== ================================================= Обновлено 28/11/2014
По-прежнему трудно найти ответ, поэтому я решил предоставить свой файл конфигурации для клиентского приложения 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
=========================================== ================================================= Обновлено 28/11/2014
Принимая предложение от xpa1492, я поставил IP-адрес и номер порта Borker на 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
Я редактировал свои вопросы, добавляя записанное сообщение в файл журнала программы stunnel. Надеюсь, теперь вопрос более ясен. – auto9817
На самом деле спасибо за обновление хорошего ответа. просто любопытно, можем ли мы случайно присвоить этот номер порта, к которому подключается ваш клиент? Должен ли я использовать сканер, чтобы найти свободный порт на первом месте? Также где я могу получить xxx_cert.pem и xxx_key.pem? Я искал папку stunnel, но было еще 3 файла pem, но не FIXORDER. – auto9817
Если серверу требуется SSL, тогда им нужно будет предоставить вам правильный ключ и сертификат для использования. Если у них нет (что обычно бывает для сред QA/UAT), то вам, вероятно, не нужен SSL. Вы можете использовать любой желаемый порт (если он не используется никаким другим приложением). Общепризнано, что порты до 1024 зарезервированы, поэтому вы должны использовать что-то выше 1024 (где конфликты очень редки). – xpa1492