Bom dia… Estou com uma duvida se possivel poderiam me ajudar ?
Estou desenvolvendo um web site para testar rastreadores… e tenho a duvida de como fazer a comunicação entre web site e rastreador… já me disseramque teria que criar um Socket… mais o rastreador não vai ficar ligado em uma porta serial na minha maquina e sim enviando informações para um servidor… e eu teria acesso a paste onde armazenara as informações enviadas pelo mesmo… como posso fazer isso ? via socket ou web service ? vocês teriam alguma ideia ?
Obrigado.
att. Matheus.
Carinha, Web service tipicamente um bichim que tu coloca no servidor e que responde as coisas na forma de um XML. Geralmente na porta 80, e usando o protocolo Http.
Se o tal rastreador suporta tudo isso, tudo bem, dá pra se pensar em um webservice.
Mas se o rastreador usa um protocolo específico, você tem, sim que usar Socket. Socket não é pra porta serial, é para qualquer comunicação. O protocolo Http é implementado no java usando sockets…
entendi abmpicoli…
pesquisei sobre sockets na internet e não vi nem uma implementação até agora dele sendo utilizando em WEB… até criei um… é bemmm mais simples que um web service você ou alguem aqui do foum saberia me dizer onde posso achar ou se tens exemplos de como utilizar sockets na web ? att. Ps: é que eu spi novato nessa parte de comunicação…troca de informações… só trabalhei com aplicações desk na facul. em JAVA.
Carinha, sockets são a base da web
.
Procura ele nos códigos fontes do Tomcat, JBoss, ferramentas de FTP…
Agora, quanto a esse “ser muuuuito mais fácil” que webservices que você diz, estou preocupado. Porque se você programa sockets na unha tem que ver todo o tratamento de falhas de comunicação. E para webservices, geralmente há alguma API pronta. Se não me engano, o J2EE tem uma, é que, pra dizer a verdade, ainda não usei… Só que não adianta nada se o rastreador não suporta eles.
Para mensagens mais simples, sockets são legais, inclusive por serem mais “rápidos” que webservices: afinal, no webservice você tem que montar o XML para enviar a mensagem, e a mensagem vem cheia de “coisas desnecessárias”, enquanto que “na unha” você pode fazer uma comunicação mais “enxuta”.
Sim Desculpe pelo Muittto mais facil… tem essa desvantagem… é que aprincipio se eu conseguir receber e enviar informações para o rastreador já é muito bom…ao longo do projeto vou implementando tratamentos e etc… por hora quero conseguir conversar com o carinha lá hehe.
Mto obrigado !..
VLw
abmpicoli sera q pode me ajudar mais um pouco ?
estou com um socket da apostila da CAELUM fazendo tudo igual ainda tenho o mesmo erro poderia verificar ?
Classe Servidor
package Chat;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class Servidor {
public static void main(String[] args) throws IOException {
// Cria um socket de servidor
ServerSocket servidor = new ServerSocket(8585);
System.out.println("Conectado ao servidor Porta aberta 8585");
// Espera a conexão com algum client então caso sera liberado abre uma
// conexão
Socket client = servidor.accept();
System.out.println("Nova conexão com o cliente "
+ client.getInetAddress().getHostAddress());// imprime o IP do
// client
// LENDO INFORMAÇÕES QUE O CLIENTE NOS ENVIA
Scanner entrada = new Scanner(client.getInputStream());
while (entrada.hasNextLine()) {
System.out.println(entrada.nextLine());
// FECHA CONEXÃO COM O SOCKET
entrada.close(); // fecha entrada de dados do client
servidor.close(); // fecha conexão com o servidor
}
}
}
Classe Cliente
package Chat;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
public static void main(String[] args) throws UnknownHostException,
IOException {
Socket client = new Socket("127.0.0.1", 8585);
System.out.println(" O cliente se conectou ao servidor!");
Scanner teclado = new Scanner(System.in);
PrintStream saida = new PrintStream(client.getOutputStream());
while (teclado.hasNextLine()) {
saida.println(teclado.nextLine());
}
saida.close();
teclado.close();
}
}
executo o servidor… depois o cliente e tento enviar uma msg para o servidor e dá esse erro.
[code]
Exception in thread “main” java.lang.IllegalStateException: Scanner closed
at java.util.Scanner.ensureOpen(Unknown Source)
at java.util.Scanner.findWithinHorizon(Unknown Source)
at java.util.Scanner.hasNextLine(Unknown Source)
at Chat.Servidor.main(Servidor.java:25)
[quote][/code]
oque poderia ser ?
posta a correção ai pra gente =)
[code] // LENDO INFORMAÇÕES QUE O CLIENTE NOS ENVIA
Scanner entrada = new Scanner(client.getInputStream());
while (entrada.hasNextLine()) {
System.out.println(entrada.nextLine());
}
// O ERRO ESTAVA AQUI.... A CHAVE ESTAVA NO LUGAR ERRADO..
// FECHA CONEXÃO COM O SOCKET
entrada.close(); // fecha entrada de dados do client
servidor.close(); // fecha conexão com o servidor
}
}
} [/code]
OI
Carlinha
eu estou tentando mandar informações de um rastreador para servidor e nao estou conseguindo,
Pode me ajudar
Posta ai como voce fez para comunicar via Socket