Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Не могу справиться с ошибкой socket error #10054 connection reset


wipr   (06.04.16 16:41

У меня есть давно хорошо работающий проект 2-х звенный клиет серверной архитектуры. Работает он только в локалке. Появилась необходимость часть задач выполнять через Internet. Поэтому решил разобраться с 3-х звенной архитектурой. Разбираться начал с DataSnap в качестве обучения выбрал пример по адресу: http://www.webdelphi.ru/2012/08/isapi-mysql-i-datasnap-xe2/. У меня Windows 8.1, Delphi XE3. В данном примере имеются 2 проекта. Один только чтение. Второй чтение, добавление, удаление, изменение. Запускаются и начинают работать все хорошо, но до тех пор пока не остановишься в работе минуты на 3. После такого таймаута в примере где только чтение запрос на connect выдает ошибку: socket error #10054 connection reset by peer. При disconnect онибки нет. А вот в проекте в котором можно менять данные все наоборот, т.е. при открытии ошибки нет, а при попытке применить изменения или закрыть набор выдается эта же ошибка.
Поиски в инете ничего не дали. Я отлично понимаю, что сервер сбрасывает клиента, который перестал подавать признаки жизни. Понимаю так же то, что можно увеличить таймаут на сервере, но думаю это будет не совсем правильно т.к. количество подключений одновременно возможно будет достаточно большим и это может все сказаться на устойчивости сервера. Хотелось бы узнать как можно победить эту проблему?


NoUser ©   (06.04.16 17:05[1]

> пока не остановишься в работе минуты на 3

и как это в коде выглядит, неужто Sleep(3000)?


> запрос на connect выдает ошибку: socket error #10054 connection
> reset by peer.

10054: An existing connection was forcibly closed by the remote host.

Маловероятно, чтобы эту ошибку вызвал "запрос на connect"


wipr   (06.04.16 20:41[2]

Маловероятно, чтобы эту ошибку вызвал "запрос на connect"
в проекте, в котором только чтение данных именно при попытке запроса на connect, это факт.
и как это в коде выглядит, неужто Sleep(3000)?
явного sleep-а разумеется нет, но факт остается фактом. Пока я выполняю какие либо действия с набором данных, ошибки нет. Как только 3-4 минуты ничего не делаю то после этого выдается ошибка. Более того оставил клиента минут на 15, монитор уснул, дернул мышкой, а набор данных в клиенте закрыт.


Rouse_ ©   (06.04.16 22:26[3]


> Как только 3-4 минуты ничего не делаю то после этого выдается
> ошибка

Есть такой нюанс с TCP - прокидывай пустой запрос периодически, либо настрой таймауты с обоих сторон (но проще пускать пустой запрос).


Cobalt ©   (14.04.16 15:18[4]

поищи в параметрах компонент что-то типа keepalive


Rouse_ ©   (14.04.16 20:53[5]

Удалено модератором


имя   (21.04.16 13:38[6]

Удалено модератором


имя   (21.04.16 14:08[7]

Удалено модератором


имя   (21.04.16 14:36[8]

Удалено модератором


Дима   (08.12.19 10:57[9]

как решить вопрос


Дима   (08.12.19 12:03[10]

Дело в том,что все сайты на запрос отвечают,а некоторые выдают такую ошибку,обрыв связи:

Memo1.Text:=HTTP.Get('https://moskva.beeline.ru/customers/products/'); vk.com тоже
IdHTTP1.Disconnect();

Версия инди последняя,только делфи установил.Добавил THTTPClient,менял TLS,SSL рукопожатие.Уже несколько месяцев не могу ответ на запрос с этого сайта получить.
Если кто решение найдёт,оставьте в теме.Заранее спасибо.


Виктор   (06.04.21 00:02[11]

вот решение:
можно добавить ещё логин и пароль для сайта
 try
  begin
  //--
      idHttp1 := TidHttp.Create(nil);
   MS := TMemoryStream.Create;

      SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

     SSLHandler.SSLOptions.SSLVersions := _GetSSLVersions;
 SSLHandler.SSLOptions.CipherList := 'ALL';
        IdHTTP1.IOHandler  := SSLHandler;

  SSLHandler.Open;

   idHttp1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0';
   idHttp1.Request.AcceptLanguage := 'ru';
   idHttp1.Response.KeepAlive := true;

   idHttp1.HandleRedirects := true;//automaticaly change location
   IdHTTP1.Request.BasicAuthentication:=True;

  MS :=TMemoryStream.Create;

 IdHTTP1.Get(''https://moskva.beeline.ru/customers/products/'+Edit1.Text+'.xls', MS);

 MS.SaveToFile(ExtractFilePath(ParamStr(0))+'\Attach\'+Edit1.Text+'.xls');  
  MS.Free;
  end
 except
  MS.Free;
 end;


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо