Array
(
)

Socket Error # 10054 Connection reset by peer

Rudá
   - 19 jan 2006

Para fazer testes fiz o seguinte

Conectei o cliente com o server e dei um finalizar tarefa para que ele feche, como se fecha-se por causa de algum erro ou algo do tipo o cabo de rede desconectou.

Ai quando dei o finalizar ele deu o erro no server Socket Error 10054 Connection reset by peer

Ai queria identificar de onde vem esse erro para eu tratar e desconectar.


Thomaz_prg
   - 19 jan 2006

No evento OnError, se você adicionar algum comando, é ele quem fica responsável por mostrar o erro.


Rudá
   - 19 jan 2006

procedure TForm_Principal.TCPServerException(AThread: TIdPeerThread;
AException: Exception);
begin
AThread.Connection.Disconnect;
Memo.Lines.Add(AException.Message);
end;

Consegui tratar a erro mas e como faço para desconectar, user o AThread.Connection.Disconnect; mas não desconectou.


Massuda
   - 19 jan 2006

Vejo que você está usando Indy.

Posso estar enganado, mas quando o evento ocorre, o cliente já está desconectado. O erro que você está recebendo indica que a conexão já não existe mais (ela foi encerrada pelo cliente).


Rudá
   - 19 jan 2006

Isso mesmo estou usando o indy

Só que ele desconectou mas não desconectou corretamente e nem foi detectado pelo meu sistema no evendo OnDisconect que ele desconectou.


Massuda
   - 19 jan 2006

Quem não detecta que desconectou, o cliente ou o servidor?

Conexões TCP/IP funcionam assim: em alguns casos (por exemplo, se você desconectar o cabo de rede), você só sabe que está desconectado quando tenta enviar algo para a rede.


Rudá
   - 19 jan 2006

O servidor que da o erro quando o programa cliente é fechado pelo finalizar como se tive-se caido a conexão ou algo do tipo.

Ai o servidor deu essa msg de erro, não enviei nada para o cliente, ele que deu esse erro.


Rudá
   - 19 jan 2006

Já resovi, na hora que da o erro eu mando para o cliente e com isso ele desconecta se não responde.

procedure TForm_Principal.TCPServerException(AThread: TIdPeerThread;
AException: Exception);
begin
AThread.Connection.WriteLn(AException.Message);
end;