[RESOLVIDO]Problemas com dados vindo socket  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
vcsmetallica
JavaEvangelist
[Avatar]

Membro desde: 18/06/2008 14:22:41
Mensagens: 479
Localização: Belo Horizonte
Offline

Salve Galera!

Estou com o seguinte problema:

Tenho varios equipamentos de rastreamento, estou desenvolvendo um servidor usando socketserver ate ai blza.
O cenario ideal de funcionamento é o seguinte:

Equipamento conecta no meu servidor
Equipamento me manda string de validação
servidor valida equipamento e manda uma @
equipamento começa o ciclo para enviar informação de 3 em 3 minutos

O que esta acontecendo,

Quando o equipamento conecta com o meu servidor e peço para buscar a string da validação esta demorando muito até ocorrer o timeout, ai vem para mim todas as informaçoes do equipamento e a conexao como equipamento é derrubada.

Por exemplo

Se o meu timeout for de 30 minutos, o equipamento vai acumulando os dados dentro dele e quando for para a conexao terminar ele me manda as informações.


Ja tentei de tudo para sanar isso e nao estou conseguindo.

Alguem tem alguma ideia do que pode estar acontecendo?

Att


This message was edited 1 time. Last update was at 07/07/2011 15:51:19

ualex
JavaGuru

Membro desde: 26/08/2004 18:45:26
Mensagens: 229
Offline

não entendi muito bem, mas o que entendi a demora esta na validação da String de validação, certo ? teria que verificar isso pq esta demorando tanto essa validação, é uma consulta no banco algo assim?

http://www.alexflorentino.com
vcsmetallica
JavaEvangelist
[Avatar]

Membro desde: 18/06/2008 14:22:41
Mensagens: 479
Localização: Belo Horizonte
Offline

O que esta demorando muito é a String que vem do equipamento. O retorno do equipamento é que esta demorando muito.
Fiz os testes usando C# e o retorno do equipamento veio rapidinho, ja em java esta demorando muito.

Att
ualex
JavaGuru

Membro desde: 26/08/2004 18:45:26
Mensagens: 229
Offline

estranho... em java vc colocar server socket no ar em uma porta, quando recebi uma nova conexão vc da um "socketClient.getInputStream()" e pronto vc ja tem os dados em byte, normalmente é bem rapido... essa string é muito grande como vc esta tratando ela?

http://www.alexflorentino.com
vcsmetallica
JavaEvangelist
[Avatar]

Membro desde: 18/06/2008 14:22:41
Mensagens: 479
Localização: Belo Horizonte
Offline

Nao. essa string tem 26 caracteres.
andei pesquisando algumas coisas, acho que o equipamento trabalha com raw socket um negocio assim.
Esta muito estranho mesmo.

Att
andre.henriques
What is classpath?
[Avatar]

Membro desde: 21/06/2011 08:18:36
Mensagens: 9
Localização: Camaragibe
Offline

Olá vcsmetallica,

isso tem cara que o servidor fica lendo infinitamente, até que uma exceção é gerada e ele pare de ler e envia tudo ao mesmo tempo.
[claro que é isso, rsrsrsrsrs]

para isso vc tem que definir o final da string enviado para o servidor, o servidor deve parar de ler ao chegar no final dessa string.

eu fiz um server que o final do profocolo é uma linha em branco

cliente envia "blabalbal"
cliente envie "";

server ler equanto a leitura da linha for diferente de vazia

ao ser finalizado o server pode tratar os dados que foram enviado do cliente.

André Henriques

[Email] [WWW] [MSN]
vcsmetallica
JavaEvangelist
[Avatar]

Membro desde: 18/06/2008 14:22:41
Mensagens: 479
Localização: Belo Horizonte
Offline

Obrigado pela dica.

Vou tentar fazer isso que vc indicou.
ualex
JavaGuru

Membro desde: 26/08/2004 18:45:26
Mensagens: 229
Offline

vcsmetallica wrote:Nao. essa string tem 26 caracteres.
andei pesquisando algumas coisas, acho que o equipamento trabalha com raw socket um negocio assim.
Esta muito estranho mesmo.

Att


então eu tenho o servidor socket na minha aplicação e eu leio os dados assim:


sempre funcionou perfeitamente... agora preciso saber como vc faz...

http://www.alexflorentino.com
andre.henriques
What is classpath?
[Avatar]

Membro desde: 21/06/2011 08:18:36
Mensagens: 9
Localização: Camaragibe
Offline

olá vcsmetallic,

dá uma olha como eu faço,



Em meu caso funciona, pois o cliente envia uma linha em branco para definir o final da mensagem,
vc deve verificar qual é o 'finalizador' do seu protoloco. poderia ser uma linha com 'EOS' ou qualque outra coisa...

André Henriques

[Email] [WWW] [MSN]
vcsmetallica
JavaEvangelist
[Avatar]

Membro desde: 18/06/2008 14:22:41
Mensagens: 479
Localização: Belo Horizonte
Offline

Contar para vcs como que eu resolvi o problema. Depois de ter feito o raio da aplicação em C# tomando uma surra violenta desse tal de C# so pq o servidor socket estava demorando para me responder.



Desse jeito é quase que instantaneo.
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team