Содержание
- 1 Чем вызвана ошибка?
- 2 Включение поддержки протоколов криптографии
- 3 Принудительное включение протокола TLS 1.2
- 4 Изменение реализации объекта Socket
- 5 Добавление кода (только для Entity Framework)
- 6 Обновление NET Framework
- 7 Удаленный хост принудительно разорвал существующее подключение quik
- 8 Итак, что в таких случаях делать?
- 9 Итоги
Ошибка «Удаленный хост принудительно разорвал существующее подключение» возникает при попытке установить соединение с сервером.
Возможно, сервер при отправке ответного запроса на подтверждение подключения, не может получить обратного отклика от клиента в отведенном промежутке времени и разрывает соединение. Есть несколько решений для устранения этой ошибки, узнаем их подробнее.
Чем вызвана ошибка?
Подключение может быть принудительно разорвано удаленным хостом по следующим причинам.
- Приложение использует протоколы защиты транспортного уровня TLS 1.1/1.0, которые вызывают эту ошибку при подключении.
- Отключена поддержка криптографии, что делает невозможным использование протокола TLS 1.2. В итоге задействуется только TLS 1.0, из-за которого возникает проблемы.
- Используется платформа Entity Framework, в которой отсутствует определенная строка кода.
- Платформа «.NET» устарела или отключена. Проблема решается обновлением платформы до последней версии.
Включение поддержки протоколов криптографии
Клиент-серверные приложения не смогут использовать протокол TLS 1.2, если в ОС отключена поддержка криптографии. Для ее включения выполните следующие шаги:
Откройте Редактор реестра командой regedit, запущенной из окна «Выполнить» (Win + R).
Перейдите к разделу:
HKEY_LOCAL_MACHINESOFTWAREMicrosoft.NETFrameworkv4.0.30319
В правой части окна должен быть параметр SchUseStrongCrypto. Если отсутствует, щелкните правой кнопкой мыши на разделе «v4.0.30319» и выберите Создать – Параметр DWORD (32 бита). Присвойте ему указанное имя.
Двойным щелчком откройте свойства параметра SchUseStrongCrypto и в поле значение установите «1». Сохраните изменения на ОК и выйдите из редактора реестра.
Выполните то действие или запустите приложение, которому требуется удаленное подключение и проверьте, разрывает ли его удаленный хост.
Принудительное включение протокола TLS 1.2
Если приложение настроено для использования TLS 1.1/1.0 вместо 1.2, то при установке им подключения, скорее всего, связь с удаленным хостом будет разорвана. Поэтому для принудительного включения выполните следующие шаги:
Перейдите в корневой каталог web приложения и щелкните правой кнопкой мыши на файл «Global.asax». Выберите «Просмотр кода» из списка.
На странице найдите метод «Application_Start». Добавьте к этому методу следующую строку кода:
Сохраните изменения и проверьте, разрывается ли соединение с удаленным хостом.
Изменение реализации объекта Socket
Если определенная реализация объекта Socket имеет ошибку, это может помешать элементам приложения функционировать должным образом. Поэтому попробуйте его перенастроить:
Проверьте, что есть класс StateObject с «public byte[] buffer = new byte[1024], public Socket socket;».
Вызовите функцию Receive(Socket s), затем следующий код «void ReceiveCallback(IAsyncResult ar)».
Проверьте, сохраняется ли проблема с подключением к удаленному хосту после реализации этого кода.
Добавление кода (только для Entity Framework)
При использовании Entity Framework, ошибка может возникнуть из-за отсутствующей строки кода. Для ее добавления выполните следующие шаги:
Откройте свой файл «.edmx», под ним щелкните на «.context.tt». В файле «.context.cs» добавьте следующую строку:
Обновление NET Framework
Подключение может быть разорвано удаленным хостом из-за повреждения некоторых компонентов платформы «.NET Framework». Для этого загрузите и установите последнюю версию с сайта Майкрософт.
Проверьте, решена ли проблема после завершения установки.
Автор: · 10.11.2016
Время от времени вот такое окно: “Удалённый хост принудительно разорвал существующее подключение,” выдаёт Quik.
Если у вас наблюдаются проблемы с обрывами соединения к серверам брокера, то следуем инструкции ниже.
Конечно, это танцы с бубном и так быть не должно. Я надеюсь, что описанное ниже решение проблемы будет носить исключительно временный характер.
Удаленный хост принудительно разорвал существующее подключение quik
Подобная “незадача” возникает в случае, когда сервер брокера не может дождаться ответа от терминала клиента и отключает его принудительно. За время возникновения данной проблемы я в буквальном смысле изнасиловал своего провайдера (даже двух!), техническую поддержку разработчика терминала Quik и как закономерный итог — пришёл к технической поддержке своего брокера. То есть мы будем говорить не о проблемах провайдера или разработки. Речь пойдёт именно об обрыве подключения, под которыми следует понимать следующее:
после подключения к серверам брокера терминал Quik без каких-либо настроек загружает котировки и работает исправно. После загрузки файла конфигураций с настроенными графиками и индикаторами, терминал клиента на несколько секунд зависает и потом выдаёт сообщение: “Удалённый хост принудительно разорвал существующее подключение quik.”
Особенно обидно, когда такое происходит при наличии позиции 🙁
При этом нет возможности ни закрыть позицию, ни переставить стоп. Терминал зависает и в диспетчере задач Windows появляется статус “Не отвечает.”
Итак, что в таких случаях делать?
Повторюсь, описанные меры являются определённым танцем с бубном. Сейчас очень плотно общаюсь с технической поддержкой своего брокера и надеюсь, это принесёт свои плоды. Для реализации данного решения требуется, чтобы все акции были разнесены по разным закладкам, то есть графики Сбербанка, Газпрома, Алросы, Роснефти, фьючерсы, опционы и другие инструменты должны находиться на отдельных закладках.
Шаг 0. Настройка соединения
Отключаем автоматическое восстановление соединения. Иначе обрывы и зависания нам не дадут покоя.
- Меню Система -> Соединения
- Снимаем галочку восстановления связи
Также рекомендуется сделать резервную копию папки Quik.
Шаг 1. Настройка потока котировок
Обратите внимание на количество используемых инструментов и установите получение котировок только по открытым пользователем таблицам. Это существенно снизит поток получаемой информации с серверов брокера.
Из документации Quik‘a:
Исходя из настроек открытых пользователем таблиц» – получать новые значения только по тем инструментам и их параметрам, которые отображаются в открытых пользователем таблицах программы. Если признак включен, то с сервера принимаются параметры по всем инструментам, отображаемым в следующих окнах и таблицах
- Меню “Система->Заказ данных->Поток котировок”
- Давим кнопку “Установить настройки по открытым таблицам”
- …и получаем котировки только по нужным нам инструментам. Давим “Да”
Шаг 1.1 Сохранение изменений
Сохраняем конфигурацию Quik‘a в используемый файл .wnd.
Шаг 2. Очистка служебных файлов
Закрываем терминал Quik и удаляем файлы с расширением .dat в корне папки Quik. У меня там хранился 21 файл, у кого-то это число может быть как больше, так и меньше.
- Переходим в корень папки Quik
- Список файлов с расширением .dat папки Quik
Шаг 2.1 Добавление строки -clear
Для очистки служебных файлов с расширениями .log и .dat при каждом запуске терминала добавляем к ярлыку Quik‘a строку -clear.
- Заходим в свойства ярлыка Quik
- Параметр позволяет очистить служебные файлы. Давим на “Ок”
Наличие параметра -clear несколько ускоряет загрузку терминала Quik. Однако, после обновления программы параметр -clear придётся заново добавлять к ярлыку файла info.exe. Также это не спасёт после автоматического перезапуска программы.
Дополнительно рекомендуется сделать следующее:
- Заходим в меню “Основные настройки”
- Установка признака “На локальной машине.” Давим на ОК.
Шаг 2.2 Запуск после внесённых изменений
Запускаем терминал Quik‘a, загружаем используемую конфигурацию и пробуем подключиться. Если не помогло и опять выдаётся сообщение: “Удалённый хост принудительно разорвал существующее подключение”, то следуем инструкции далее.
Шаг 3. А если не помогло, то ищем “толстого”
Теперь сохраняем закладку самого “жирного” инструмента в отдельный файл:
- Выбор закладки — акция Сбербанка
- Сохранение закладки акции Сбербанка в отдельный файл
Можно сразу сохранить все закладки в файлы по отдельности.
Шаг 4. Удаление закладок
Удаляем ранее сохранённую закладку с самым “жирным” инструментом. В моём случае это закладка с графиками акций “Сбербанка.”
Удаление закладки с “жирным” инструментом
Шаг 5. Подключение
Подключаемся к серверу брокера и авторизуемся. Если картина не изменилась удаляем закладку с менее “жирным” инструментом и так до тех пор, пока соединение не будет установлено стабильно.
Шаг 6. Сохранение конфигурации со стабильным соединением
После того, как соединение установлено и не разрывается, сохраняем полученный файл конфигураций под другим именем. Например, your_bunny_wrote.wnd.
Шаг 7. Загрузка сохранённых закладок
После установки стабильного подключения к серверу брокера производим обратные действия. Загружаем сохранённые закладки:
- Загрузка сохранённой закладки
- Выбираем закладку и давим “Открыть”
Начинаем в обратном порядке — с наименее “жирного” и двигаемся к наиболее “толстому” инструменту. На секунду терминал подвисает, но после этого разрисовывает нужные нам графики. Вуаля!
Стабильно держащий соединение Quik
Повторяем шаг 7 до тех пор, пока не загрузим удалённые закладки всех необходимых инструментов. Благо у меня он один и обрыв соединения происходит только при сохранении в основной файл .wnd закладки с графиками Сбербанка. Хотя их там всего 5 штук.
Шаг 8. Дальнейшие действия. Рекомендации
Перед каждым закрытием терминала Quik сохраняем закладку в отдельный файл, повторяя шаг 3 для каждого “жирного” инструмента.
Мы не знаем, на каком моменте у Quik‘а возникнет желание оборвать соединение. Это возможно после очередного сохранения и загрузки файла. Поэтому рекомендую иметь два таких файла, например Сбербанк и Сбербанк_new, сохраняя изменения по очереди то в один, то в другой файл. Таким методом мы уменьшим вероятность потери данных занесённых на основной график инструмента.
Итоги
Итогами диалога с технической поддержкой брокера и разработчика поделюсь в одной из следующих заметок. Ну а я побежал сдавать “анализы” в виде своего wnd-файла конфигурации брокеру, который обещал проанализировать его структуру и решить данный вопрос.
Надеюсь, статья поможет решить проблему “Удаленный хост принудительно разорвал существующее подключение Quik” и прошу тех, кому помог один из описанных выше способов отписаться в комментариях.
Спокойной ночи, коллеги!
Спешу поделиться результатами общения с технической поддержкой разработчика и брокера. А они находятся тут 🙂
Также разработчик прислал свои рекомендации. Они находятся тут.
Используемые источники:
- https://compuals.ru/internet/udalennyj-host-prinuditelno-razorval-sushhestvuyushhee-podklyuchenie
- https://rich-poor-trader.ru/poleznoe/udalyonnyj-host-prinuditelno-razorval-sushhestvuyushhee-podklyuchenie-quik/