Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2010, 14:06   #1
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию Восстановить подключение после socket error 10054 connection reset by peer

Здравствуйте!
Писал в других темах, но мне не ответили, на других сайтах примерно также, в поиске решения этой проблемы не нашел.
Есть программа подключающаяся к серверу через idIRC:
При разъединении интернета (например отсоединить кабели, затем подсоединить кабель), вылазиет ошибка:
Цитата:
socket error 10054 connection reset by peer
И в дальнейшем при попытке заново подключится к серверу, эта ошибка вылазиет повторно! Для того что бы подключиться к серверу приходится перезапускать программу.

Простой пример:
На форме 2 кнопки, 1 RichEdit и 1 idIRC, вот весь код:
Код:
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,IdException,IdStack, IdContext, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdCmdTCPClient, IdIRC, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    Button2: TButton;
    IdIRC1: TIdIRC;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure IdIRC1Status(ASender: TObject; const AStatus: TIdStatus;
      const AStatusText: string);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
begin
idIRC1.Host:='66.230.224.106';
idIRC1.Port:=20260;
idIRC1.Connect();
end;
except
on E:EIdSocketError do
richedit1.text:=richedit1.text+'Ошибка'+sLineBreak;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
try
idIRC1.Disconnect();
except
on E:EIdSocketError do
richedit1.text:=richedit1.text+'Ошибка'+sLineBreak;
end;
end;

procedure TForm1.IdIRC1Status(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: string);
begin
begin
try
richedit1.Lines.Add(AStatusText);
except
on E:EIdSocketError do
richedit1.text:=richedit1.text+'Ошибка'+sLineBreak;
end;
end;
end;

end.
Вместо
Цитата:
socket error 10054 connection reset by peer
теперь пишет в RichEdit1 слово "Ошибка", и при попытке повторно связаться с сервом после подключения интернета, в RichEdit1 добавляется слово "Ошибка", и опять же спасает только перезапуск программы.

Что мне сделать, что бы после дисконнекта я мог не перезапуская программу, заново подключиться к серверу?

Зарание спасибо!

RAD Studio 2010 Version 14.0.3615.26342
Update 5
Indy 10.5.5
ZBEP вне форума Ответить с цитированием
Старый 26.01.2010, 18:25   #2
ZBEP
Форумчанин
 
Аватар для ZBEP
 
Регистрация: 23.03.2009
Сообщений: 334
По умолчанию

Все проблема решена. После дисконнекта добавить:
Цитата:
idIRC1.Socket.Close;
Тогда прога закроет соединение и в дальнейшем можно будет успешно подключиться к серверу.
Пример:
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
try
begin
idIRC1.raw('quit');
idIRC1.Disconnect();
idIRC2.raw('quit');
idIRC2.Disconnect();
end;
except
on E:EIdSocketError do
begin
idIRC1.Socket.Close;
idIRC2.Socket.Close;
end;
end;
end;
П.с.
spasius, Спасибо!
ZBEP вне форума Ответить с цитированием
Старый 10.06.2013, 20:50   #3
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

та же проблема, только IdHTTP1.Socket.Close; что-то не помогает...
Dux вне форума Ответить с цитированием
Старый 11.06.2013, 18:24   #4
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Dux, Если вам для idhttp то:
idHTTP1.Disconnect;
Pearl777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
idHTTP и ошибка Connection reset by peer. tebeen Работа с сетью в Delphi 11 23.01.2012 17:43
Socket Error 10054 RIO Работа с сетью в Delphi 5 22.09.2009 16:24
synapse "Connection reset by peer" Антон Ю.Б. Работа с сетью в Delphi 5 01.04.2009 18:50
Ошибка Ftp connection reset by pear NetworM Работа с сетью в Delphi 6 27.03.2009 11:09
asynchronous socket error 10060 delphin100 Работа с сетью в Delphi 6 07.05.2008 07:07