quarta-feira, 21 de julho de 2010

O que são Sockets?

Socket é um mecanismo que possibilita a comunicação entre aplicativos, criando um canal de conexão entre eles.

Existe também a forma de utilizar sockets sem conexão, que ocorre sobre o protocolo UDP (Protocolo de Datagrama de Usuarios).

O processo em que acontece conexão ocorre sobre o protocolo TCP (Protocolo de Controle de Transmissão) e funciona da seguinte forma:

O Servidor define uma porta, e aguarda conexões nessa porta.

O Cliente (que deve saber o host e a porta do servidor) solicita uma conexão com esse Servidor. Se não acontecer nenhum problema, o Servidor aceita esta conexão e cria um canal de comunicação entre Cliente/Servidor, esse canal é chamado socket.

No modo em que não há conexão, o Datagrama possui todas as informações necessárias para a comunicação entre dois sockets. Nesse modo, não é preciso se conectar a um socket destino. Ele precisa somente enviar o Datagrama mesmo sem garantir que ele seja entregue.

Agora iremos implementar um exemplo de sockets na linguagem Java, através de uma conexão entre Cliente/Servidor. O Servidor aguarda conexões e o Cliente se conecta através da porta 1234 e envia uma mensagem para o Servidor contendo a mensagem “Olá”.




Linha 13 ele declara o ServerSocket

14 - declara o Socket de Comunicação e linha 15 o Leitor Para Entrada de Dados

18 - Inicializa o ServerSocket passando como parâmetro a porta do Servidor

21 - O metodo accept() aguarda por uma conexão e só continua quando receber uma. O método retorna um socket na qual é atribuído ao Socket de Comunicação do Servidor

24 - cria um leitor de dados baseado no canal de entradas do socket e depois na linha 26, lê e imprime a linha com a mensagem enviada pelo Cliente

33 e 34 - fecha o Socket de Comunicação e o socket Servidor


Linha 11 declara o socket Cliente

12 - declara a stream de saída de dados

15 - conecta ao Servidor indicando o host e a porta

17 - cria a stream para poder imprimir dados para o canal de saída do socket

18 - passa o texto que será enviado através do socket para o Servidor. (converte para o formato de envio)

25 - fecha o socket Cliente



Segue abaixo o link para o código fonte das duas classes e as duas imagens do post:
http://www.filefactory.com/file/b353g33/n/RodrigoPrates-Sockets-JT.zip
http://www.easy-share.com/1911399442/RodrigoPrates-Sockets-JT.zip

Um comentário: