Bom dia gelera… estou tentanto receber informações de 1 cliente…
mais acontece que consigo a conexão e ele me envia as informações… mais ele não imprime as informações enquanto o servidor está conectado, ele só imprime quando fecho a conexão então todas as informações vem de uma só vez… estou utilizando scanner seria alguma coisa no codigo ?? já tentei com todos os outros comandos de Stream de entrada, o unico que consegui receber as informações corretamente foi o Scanner.
estou testando com 2 clientes… ambos de fabricantes diferentes…de 1 eu recebo e imprime normalmente e o outro somente quando fecho a conexão ele imprime…
estou achando muito estranho imprimir de um e não imprimir do outro poderia ser a forma de envio do cliente ?
As bibliotecas de I/O do Java, por padrão são bloqueantes. Ou seja, ao solicitar uma operação de I/O o método bloqueia a thread atual até que a operação seja concluída. Se o seu scanner receber um stream de um socket, por exemplo, ao chegar no método nextLine() a thread ficará bloqueada até que o outro ponto envie um finalizador de linha, se o outro cliente não enviar esse finalizador a sua thread fica bloqueada indefinidamente. A maneira mais simples de resolver isso é criar uma thread para receber as mensagens de cada cliente. No meu blog eu já escrevi um post que pode te ajudar:
Opa… vou dar uma olhada! Vlw… mais uma pergunta… você disse que para desbloquear a thread o cliente tem de enviar um finalizador correto ? então se eu pedir para o cliente enviar junto a sua inf um finalizador isso podeira ser resolvido tambem ? é que o desenvolvedor do cliente senta na minha frente hehe
esse comando faz com que o canal seja fechado e liberado do outro lado, pode ser que ajude no seu caso. principalmente se estiver usando socket com outras linguagens.
[quote=matheus.nani]Bom dia gelera… estou tentanto receber informações de 1 cliente…
mais acontece que consigo a conexão e ele me envia as informações… mais ele não imprime as informações enquanto o servidor está conectado, ele só imprime quando fecho a conexão então todas as informações vem de uma só vez… estou utilizando scanner seria alguma coisa no codigo ?? já tentei com todos os outros comandos de Stream de entrada, o unico que consegui receber as informações corretamente foi o Scanner.
estou testando com 2 clientes… ambos de fabricantes diferentes…de 1 eu recebo e imprime normalmente e o outro somente quando fecho a conexão ele imprime…
estou achando muito estranho imprimir de um e não imprimir do outro poderia ser a forma de envio do cliente ?
Boa tarde Mateus.
Não tenho muita pratica, estou tentando enviar e receber msg de um rastreador, estou com um rastreador mas não aceita um ip diferente do padrão…, vc pode me informar onde consigo um módulo rastreador que consigo configurar um endereço de ip, vi que vc consegue enviar e receber msg de um rastreador, pode me passar essas informações, desde já agradeço!!!
Boa tarde Mateus.
Não tenho muita pratica, estou tentando enviar e receber msg de um rastreador, estou com um rastreador mas não aceita um ip diferente do padrão…, vc pode me informar onde consigo um módulo rastreador que consigo configurar um endereço de ip, vi que vc consegue enviar e receber msg de um rastreador, pode me passar essas informações, desde já agradeço!!!
Onde você pode encontrar uma peça para configura-la ? acredito que todo e qualquer rastreador possa ser configurado…pois caso você queira mudar de servidor…ele teria que trocar de Ip. Você teria que ter o protocolo do rastreador… lá provavelmente tem um comando para modificar IP e Porta. algo como…
aqui utilizamos o HyperTerminal… mas isso pode variar de fabricante para fabricante…
seu rastreador teria que vir com algum instalador… como um suite para celular… para poder fazer certas modificações…
Primeiramente você deve confgurar seu rastreador com um IP (O IP da sua maquina)e uma Porta que você possa “escutar”, no seu caso acredito que seja apenas um computador então seu IP teria que ser fixo pois o rastreador tentara enviar sempre no IP em que ele foi configurado. Um ip dinâmico não iria dar certo…pois ele muda… e com isso teria que mudar também no rastreador. configure um porta em seu Firewall e deixa-a sempre aberta para que o rastreador possa enviar suas informações através dela…
Seu problema não é realmente trivial e existem várias possibilidades.
Do jeito que enxergo, creio que o melhor caminho seja:
criar uma aplicação(de interface com o rastreador) a ser instalada e executada num servidor (máquina ativa 24x7) que mantenha a comunicação com o rastreador;
esta aplicação deve registrar os dados necessários da aplicação num banco de dados, possibilitando sua visualização (e eventualmente interação) por múltiplos clientes de uma aplicação web (banco de dados e servidor da aplicação web podem estar na mesma máquina que a aplicação de interface com o rastreador;
os clientes, por meio da aplicação web, poderiam enviar comandos ao rastreador ou a aplicação de interface, por meio do banco de dados (integração mais fácil).
web services poderiam ser construídos para tornar a arquitetura desta aplicação mais aberta, mas não me parece um pré-requisito.
ter o protocolo do rastreador é essencial… pois lá mostra qual o formato e o tamanho que suas mensagens devem ser.
ele é seu “Tradutor” como você não sabe a lingua que o rastreador fala nem o rastreador sabe a sua lingua o protocolo seria o cara que fica entre você e o rastreador… padronizando isso.
Nosso amigo ViniGodoy disponibilizou um bom material dê uma olhada:
[quote=matheus.nani]Onde você pode encontrar uma peça para configura-la ? acredito que todo e qualquer rastreador possa ser configurado…pois caso você queira mudar de servidor…ele teria que trocar de Ip. Você teria que ter o protocolo do rastreador… lá provavelmente tem um comando para modificar IP e Porta. algo como…
aqui utilizamos o HyperTerminal… mas isso pode variar de fabricante para fabricante…
seu rastreador teria que vir com algum instalador… como um suite para celular… para poder fazer certas modificações…
Primeiramente você deve confgurar seu rastreador com um IP (O IP da sua maquina)e uma Porta que você possa “escutar”, no seu caso acredito que seja apenas um computador então seu IP teria que ser fixo pois o rastreador tentara enviar sempre no IP em que ele foi configurado. Um ip dinâmico não iria dar certo…pois ele muda… e com isso teria que mudar também no rastreador. configure um porta em seu Firewall e deixa-a sempre aberta para que o rastreador possa enviar suas informações através dela…
Seu problema não é realmente trivial e existem várias possibilidades.
Do jeito que enxergo, creio que o melhor caminho seja:
criar uma aplicação(de interface com o rastreador) a ser instalada e executada num servidor (máquina ativa 24x7) que mantenha a comunicação com o rastreador;
esta aplicação deve registrar os dados necessários da aplicação num banco de dados, possibilitando sua visualização (e eventualmente interação) por múltiplos clientes de uma aplicação web (banco de dados e servidor da aplicação web podem estar na mesma máquina que a aplicação de interface com o rastreador;
os clientes, por meio da aplicação web, poderiam enviar comandos ao rastreador ou a aplicação de interface, por meio do banco de dados (integração mais fácil).
web services poderiam ser construídos para tornar a arquitetura desta aplicação mais aberta, mas não me parece um pré-requisito.
ter o protocolo do rastreador é essencial… pois lá mostra qual o formato e o tamanho que suas mensagens devem ser.
ele é seu “Tradutor” como você não sabe a lingua que o rastreador fala nem o rastreador sabe a sua lingua o protocolo seria o cara que fica entre você e o rastreador… padronizando isso.
Nosso amigo ViniGodoy disponibilizou um bom material dê uma olhada: