Fórum IdTCPServer e IdTCPClient #321504

16/05/2006

0

Estou tipo fazendo um chat e me bati com um problema!

O TCPServer fica na maquina 10.1.1.1
Os TCPClient fica nas maquinas 10.1.1.2 até 10.1.1.10

Tudo uma blz, só que por exemplo o cabo da rede foi desconectado, e como ja foi mencionado aqui no forum que só é detectado a perda de conexão depois que é enviado algo!

Então fiz tipo um time acada 1 minuto ele verifica a conexão, só que mesmo ele enviando acha que ainda ta conectado!

E agora??


Rudá

Rudá

Responder

Posts

16/05/2006

Massuda

Como você está fazendo o teste de conexão no timer?


Responder

Gostei + 0

16/05/2006

Rudá

Estou mandando uma string

WriteLn(´teste´);


Responder

Gostei + 0

16/05/2006

Massuda

Mas é só isso ou você espera alguma resposta?

Um jeito de saber com certeza se a conexão está ruim ou o servidor parou é enviar [b:f1455f8f16]e[/b:f1455f8f16] esperar por uma resposta (um dos parâmetros de ReadLn permite especificar um timeout na espera).


Responder

Gostei + 0

16/05/2006

Rudá

Descupe não entendi, então o que devo fazer para verificar?


Responder

Gostei + 0

16/05/2006

Massuda

Você tem que no TIdTCPClient enviar para o TIdTCPServer (ou o contrário, se preferir) alguma coisa (por exemplo, como você fez, ´TESTE´) e fazer o TIdTCPServer enviar uma resposta ao TIdTCPClient (por exemplo, ´OI´). Assim você sabe que a conexão está boa e que o servidor está rodando.

Assumindo que o cliente irá testar o servidor, a rotina do timer pode ser...
procedure TSeuForm.TesteTimer(....
begin
  IdTCPClient1.WriteLn(´PING´);
  S := IdTCPClient1.ReadLn(...);
  // pode testar se recebe e se é a resposta esperada
end;



Responder

Gostei + 0

16/05/2006

Massuda

A propósito, algo muito parecido foi discutido [url=http://forum.clubedelphi.net/viewtopic.php?t=69507]neste tópico[/url].


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar