Olá a todos.
Estamos com um programa em Delphi aqui testando mas acho que esta pergunta se aplica a qualquer linguagem. Temos uma aplicação que deve rodar 24 / 7 conectada a um dispositivo (via TCP). Tudo funciona bem, mas em alguns testes em laboratório detectamos que o TCP aparentemente não está desempenhando o papel em relação à confiabilidade e informação de erros. Por exemplo: fizemos que o dispositivo em uma das pontas mantivesse conectado ao outro mas não retirasse os bytes da pilha TCP. Fazendo o sniffer desta comunicação usando o Wireshark percebemos que após um tempo começa a ter vários retry e a pilha informa que o buffer do outro lado está cheio. porém na aplicação não recebo nada, nenhum erro, e a aplicação fica passando na rotina de Send normalmente. Fizemos este mesmo teste com um programa em Delphi e em C#. Mesmo comportamento em ambos.
No Delphi usamos a biblioteca do Indy (nativa), mas usamos também o Synapse para testes e o resultado é o mesmo.
Seria isto mesmo? Pois se for assim teremos que fazer mais tratamentos na camada de aplicação...e daí pode compensar usar UDP onde o overhead é bem mais baixo.
Alguma pista ou onde buscar melhor estas informações???
Obrigado