Orientação a Objetos - Gil Eduardo de Andrade

Propaganda
Orientação a Objetos
Sockets em Java
ServerSocket / Socket
Gil Eduardo de Andrade
Sockets em Java
Introdução
• Sockets são mecanismos de comunicação entre
tarefas que permitem que aplicativos, em um
mesma máquina ou em máquinas distintas,
“conversem” através da utilização do protocolo
TCP/IP;
• Para que a comunicação ocorra é necessário
especificar o IP da máquina com qual pretende-se
“conversar” e a porta na qual a aplicação nessa
máquina está respondendo;
Aula 21: Sockets em Java: ServerSocket / Socket – Gil Eduardo de Andrade
Sockets em Java
Codificação
• Primeiramente, para que uma comunicação
ocorra, é necessária a abertura de uma porta
por parte de uma máquina servidor;
• Após a abertura de uma porta é possível ao
servidor ouvir os pedidos de conexão de
máquinas cliente;
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
A classe “ServerSocket”
(java.net.ServerSocket)
• Para efetuar a abertura de uma porta por
parte da máquina servidor, intanciamos um
objeto da classe ServerSocket passando ao seu
construtor o número da porta a ser aberta:
– ServerSocket ss = new ServerSocket(12000);
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
A classe “Socket”
(java.net.Socket)
• Após abrir uma porta é necessário ouví-la a
espera dos pedidos de conexão vindos das
máquinas cliente, para tal utilizamos a classe
Socket em conjunto com o método accept() da
classe ServerSocket:
– Socket sock = ss.accept();
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
Criando os canais de comunicação
• O servidor socket fica pausado na linha “Socket sock
= ss.accept()” a espera de uma nova conexão, no
momento em que ela ocorre torna-se necessário
definir canais de comunicação para envio e
recebimento de dados;
• Para tal são utilizadas as classes: OutputStream,
DataOutputStream, InputStream e
DataInputStream;
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
As classes “Output e DataOutputStream”
(java.io.OutputStream)
(java.io.DataOutputStream)
• Para criação do canal de envio de dados são
instanciados os objetos das classes
OutputStream e DataOutputStream:
– OutputStream os = sock.getOutputStream();
– DataOutputStream dos = new DataOutputStream(os);
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
Método para Recebimento de Dados
• Para que seja possível enviar dados via uma
conexão socket em Java utilizamos o método
writeUTF() da classe DataOutputStream, que
recebe como parâmetro uma String contendo
o dado a ser enviado para o cliente:
– dos.writeUTF (“dado a ser enviado”);
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
As classes “Input e DataInputStream”
(java.io.InputStream)
(java.io.DataInputStream)
• Para criação do canal de recebimento de
dados são instanciados os objetos das classes
InputStream e DataInputStream:
– InputStream is = sock.getInputStream();
– DataInputStream dis = new DataInputStream(is);
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
Método para Recebimento de Dados
• Para que seja possível receber dados via uma
conexão socket em Java utilizamos o método
readUTF() da classe DataInputStream, que
retorna uma String contendo o dado enviado
por um cliente:
– String dado_recebido = dis.readUTF();
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
Fechando uma comunicação
• Após a transferência de dados via socket ter
sido concluída, torna-se necessário finalizar a
comunicação, indicando ao sistema
operacional a liberação da porta que havia
sido reservada anteriormente, para tal utilizase o método close() da classe Socket:
– sock.close();
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
Exemplo: Socket em Java
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
Exemplo: Socket em Java (Servidor)
O código-fonte completo encontra-se disponível na seção de exemplos desta aula.
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Sockets em Java
Exemplo: Socket em Java (Cliente)
O código-fonte completo encontra-se disponível na seção de exemplos desta aula.
Aula 21: Sockets em Java: SocketServer / Socket – Gil Eduardo de Andrade
Download