Socket ou Web service?

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 :slight_smile: .

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 ?

Já achei o erro! Vlw

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