Ir ao conteúdo
  • Cadastre-se
tpicon

Confiabilidade tcp

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

UDP nao tem controle outro pode receber ou nao pacote mas nao informa pra você usado em streaming  tcpip é que da controle dos pacotes se recebeu certinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado xmauro, mas a questão nem é esta. 

 

O TCP garante nas primeiras camadas OSI e tudo mais, mas no nivel de aplicação não recebo nada se por exemplo o outro lado está com buffer cheio que foi o teste que fizemos aqui. O lado server deixa alguem se conectar mas não retira os bytes da pilha TCP. Ele sabe que tem bytes lá mas não retira (propositalmente para testes). O outro lado não recebe um estouro na aplicação ou alguma informação de que o outro lado está com buffer cheio ou coisa do tipo.

 

O que gostaria de saber é se é possível detectar isso na camada de aplicação..

 

Desde já obrigado pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×