página web envia e recebe informações de uma máquina na rede do servidor. Dá pra fazer?

7 respostas
rock-skull

Sei que o título ficou meio confuso mas vamos ao problema. Eu tenho uma máquina na rede que controla um módulo (Hardware). E tenho uma máquina servidora onde está um sistema web desenvolvido no Netbeans Visual Web Pack (JSF + Tomcat).

Existe uma página JSP em que vocÊ pode enviar informações ao módulo (localizado na máquina que está na mesma rede do servidor), e receber informações dele. Minha dúvida é como fazer isso ? Fazer com que através da página eu possa trocar informações com uma máquina que está na mesma rede do meu Servidor.

7 Respostas

maquiavelbona

Leia sobre sockets, vai usar principalmente ele. Caso não queira fazer algo tão direto, trabalhar com serviços pode ser uma opção ( mais trabalhosa, eu diria ).
O fluxo seria Browser->Servlet-(via socket)->maquina na mesma rede->hardware. O contrário também seria possível.

Até!

rock-skull

Você teria alguma referência, não à sockets, mas ao uso dele aplicado À Web ?

E obrigado pela resposta.

maquiavelbona

Qual é a sua dúvida? A Web usa socket (escondido de você, óbvio), mas o que terias que fazer é uma servlet no servidor Web que se conecta via socket na máquina que controla o hardware, e fazer o que quiser, o processo contrário é um pouco mais trabalhoso, vai ter que trabalhar com estados atuais, vai parecer que o fluxo é da maquina do hardware para o servidor, mas na verdade é o servidor Web que vai estar puxando constantemente informações atualizadas ( se você for usar ajax reverso é outra história, mas acho isso avançado demais para a sua pergunta ).

Não vejo qual a diferença de usar isso com ou sem web para precisar de material separado só para essa aplicação.

Até!

rock-skull

É o seguinte… não tenho muita experiêencia com Web, estou desenvolvendo por necessidade desse trabalho, na verdade eu trabalho mais com hardware.

Eu estou desenvolvendo, por conta disso, com o Netbeans Visual Web Pack. A ideia que eu tenho ao usar socket (como eu acho que vaio funcionar, não etou falando que é o certo, mas é como eu entendi até agora): Você tem um servidor socket e um cliente. Eles estabelecem conexão e trocam informações quanto for necessário, até que essa conexão seja fechada certo ?

Ao meu entender, quando eu fizer isso com servlet, que tem um ciclo de vida, essa conexão vai ficar ativa o tempo todo ? Eu vo precisar conectar toda vez que eu tiver que fazer uma requisição ?

maquiavelbona

Certo, mas essa troca de informações não vai ser aparente para o cliente, uma vez que só ao fim da execução da servlet, o browser vai receber o resultado.

rock-skull:

Ao meu entender, quando eu fizer isso com servlet, que tem um ciclo de vida, essa conexão vai ficar ativa o tempo todo ? Eu vo precisar conectar toda vez que eu tiver que fazer uma requisição ?

Uma requisição faz uma chamada a servlet e cada servlet deveria fazer uma conexão com o hardware, mas tens como minizar esse mundaréu de criar/fechar socket, só que aí é um pouco mais avançado, terias que trabalhar com filas e servidores de mensagem, coisa que demora um pouco até entender.

Bons estudos!

Até!

rock-skull

Certo.

Assim, teria então como eu criar essa conexão em separado e passar pro meu site ? Tipo, criar uma aplicação java separada que faça essa conexão e essa aplicaçã (localizada no servidor) passar as informações pra esse sistema WEB.

Porque o ideal era que essa conexão entre a máquina do módulo e a máquna servidora fosse permanente, durasse, um dia inteiro por exemplo.

Explicando: O computador que tem o módulo tem que saber se a conexão está ativa, porque se o servidor for desligado ou houver algum erro, a máquina em que está o modulo não vai saber (ou vai?). A não ser que eu fizesse uma verificação de tempos em tempo (estilo um ping-pong do mIRC) certo ? (Ou tô falando nada com nada ?)

E desculpa tá pentelhando assim é que com pesquisa eu ainda não achei a solução pra isso.

maquiavelbona

rock-skull:
Certo.

Assim, teria então como eu criar essa conexão em separado e passar pro meu site ? Tipo, criar uma aplicação java separada que faça essa conexão e essa aplicaçã (localizada no servidor) passar as informações pra esse sistema WEB.


Tem, aí você se conectaria a essa aplicação e depois a última conectaria a outra máquina, mas para resolver alguns problemas de concorrência, terias que estudar um pouco sobre filas.

rock-skull:

Porque o ideal era que essa conexão entre a máquina do módulo e a máquna servidora fosse permanente, durasse, um dia inteiro por exemplo.

Explicando: O computador que tem o módulo tem que saber se a conexão está ativa, porque se o servidor for desligado ou houver algum erro, a máquina em que está o modulo não vai saber (ou vai?). A não ser que eu fizesse uma verificação de tempos em tempo (estilo um ping-pong do mIRC) certo ? (Ou tô falando nada com nada ?)

E desculpa tá pentelhando assim é que com pesquisa eu ainda não achei a solução pra isso.


A verificação se a conexão está funcionando pode ser parecida com essa que você falou ( de tempos em tempos para evitar time-out ),pois a máquina que recebe o socket não sabe diretamente se alguém fechou a conexão.

Até!

Criado 2 de dezembro de 2007
Ultima resposta 3 de dez. de 2007
Respostas 7
Participantes 2