Я должен запустить свой инициатор и акцептор на двух разных ОС. Я вижу странную проблему разъединения сокета. Ниже приведены различные сценарии, которые я пробовал. Я использую C ++ / Quickfix. Я давно пользуюсь установкой в Debian / Ubuntu, никаких проблем. С CentOS и Ubuntu установление соединения создает проблему.
Детали проблемы: —
Мой инициатор работает на машине-1, которая является CentOS
Мой акцептор работает на машине-2, которая является Ubuntu
Когда я пытаюсь подключиться, я получаю следующую ошибку: —
<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)
Пожалуйста, не проходите мимо поля контрольной суммы в вышеприведенном пакете, так как мне пришлось изменить состав отправителя / назначения перед публикацией здесь.
Я взял тот же код инициатора на другой Machine-3. Оба Ubuntu сейчас.
С машины-3 я могу успешно подключиться к машине-2.
У этого сценария не было проблем, поэтому мой файл настроек и т. Д. Все в порядке.
Я взял тот же код акцептора для машины-1. Оба CentOS сейчас
Снова, я мог успешно соединиться.
Я также проверил, могут ли быть проблемы с брандмауэром. Но нет никаких проблем, так как, telnet от Machine-1 до Machine-2 успешен.
Как я понимаю, это ошибка TCP / IP, когда одноранговый узел отключает или закрывает сокет после его открытия. Но способ, которым приходит сообщение, не уверен, является ли ошибка из-за TCP / IP или быстрого исправления. Я не вижу причин для проблемы рукопожатия TCP / IP, так как TELNET также работает нормально.
Задача ещё не решена.
Других решений пока нет …