Você está na página 1de 13

Programação:

Sockets em Java

Redes de Computadores

Glauco Antonio Ludwig Leonardo Lemes Fagundes

Programação: Sockets em Java Redes de Computadores Glauco Antonio Ludwig Leonardo Lemes Fagundes

Roteiro

  • Programação usando Sockets

Sockets com TCP

  • Exemplo de aplicação

Sockets com UDP

  • Exemplo de aplicação

Exercício

  • Bibliografia

Redes de Computadores

2
2

Programação usando Sockets

  • Tipo particular de modelo de programação em redes utilizado em várias linguagens como: C, C++ e Java

  • A comunicação se dá utilizando TCP ou UDP

  • Para fazer uma conexão via rede é necessário saber:

O endereço da máquina remota (IP ou nome da máquina) O número da porta na qual o processo remoto está executando

  • As duas informações acima formam o que se chama de “socket”

  • Sockets em Java

Classes disponíveis no pacote “java.net”

Redes de Computadores

3
3

Sockets com TCP

  • Primeiramente ocorre uma tentativa de estabelecimento de uma conexão (onde é informado endereço e porta do servidor)

Após, basta enviar dados para o fluxo da conexão (não é preciso informar endereço e porta novamente)

  • Baseado no modelo de fluxos (streams)

Um socket utiliza dois fluxos: um fluxo de entrada e outro de saída Um processo envia dados a outro simplesmente escrevendo no fluxo de saída associado com um socket Um processo recebe dados escritos por outro processo lendo de um fluxo de entrada associado com um socket

Redes de Computadores
Redes de Computadores

estalebecimento da conexão

“n” troca de informações

encerramento da conexão

4
4

Sockets com TCP (lado servidor)

  • Criar um socket do tipo “servidor” em uma determinada porta

ServerSocket server = new ServerSocket (6789);

  • Esperar por uma conexão (permanece bloqueado até um pedido de conexão ser recebido)

Socket connectionSocket = server.accept();

  • Criar o fluxo de entrada e o de saída

ObjectInputStream input = new ObjectInputStream (connection.getInputStream());

ObjectOutPutStream output = new ObjectOutputStream (connection.getOutputStream());

  • Recebendo e enviando dados

String message = (String) input.readObject(); output.writeObject(“os dados foram recebidos”);

Redes de Computadores

5
5

Sockets com TCP (lado cliente)

  • Criar socket cliente e ativar conexão TCP entre cliente e servidor

Socket client = new Socket (“endereçoServidor”, 6789);

  • Criar o fluxo de entrada e o de saída

ObjectInputStream input = new ObjectInputStream (client.getInputStream());

ObjectOutPutStream output = new ObjectOutputStream (client.getOutputStream());

  • Enviando e recebendo dados

output.writeObject(“enviando dados”); String message = (String) input.readObject();

  • Fechar conexão com o servidor

client.close();

Redes de Computadores

6
6

Exemplo de aplicação usando TCP

  • Fazer download do programa exemplo (possui as classes TCPServer.java e TCPClient.java)

  • Em dupla de alunos, instalar as diferentes classes em diferentes máquinas

  • Compilar, rodar, analisar e comentar o código do programa

Redes de Computadores

7
7

Sockets com UDP

  • Não há uma tentativa de estabelecimento de uma conexão

Para cada mensagem enviada (tanto pelo cliente quanto pelo servidor) é necessário informar o endereço e a porta do destinatário

Redes de Computadores

8
8

Sockets com UDP (lado servidor)

  • Criar um socket em uma determinada porta

DatagramSocket server = new DatagramSocket(9876);

  • Criar um objeto para receber o pacote/Criar um pacote para ser enviado

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

DatagramPacket sendPacket = new DatagramPacket (sendData, sendData.length, IPAddress, port);

  • Recebendo e enviando os pacotes

server.receive(receivePacket);

server.send(sendPacket);

Redes de Computadores

9
9

Sockets com UDP (lado cliente)

  • Criar um socket (ao contrário do TCP, não ativa conexão)

DatagramSocket client = new DatagramSocket();

  • Criar um pacote para ser enviado/Criar um objeto para receber o pacote

DatagramPacket sendPacket = new DatagramPacket (sendData, sendData.length, IPAddress, 9876);

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

  • Recebendo e enviando os pacotes

client.send(sendPacket);

client.receive(receivePacket);

Redes de Computadores

10
10

Exemplo de aplicação usando UDP

  • Fazer download do programa exemplo (possui as classes UDPServer.java e UDPClient.java)

  • Em dupla de alunos, instalar as diferentes classes em diferentes máquinas

  • Compilar, rodar, analisar e comentar o código do programa

Redes de Computadores

11
11

Exercício

  • Desenvolver uma aplicação de bate-papo na sua linguagem de preferência.

Redes de Computadores

12
12

Bibliografia

  • Kurose, J.; Ross, K. Redes de Computadores e Internet: uma nova abordagem. Boston: Addison-Wesley, 2001.

  • Deitel, H. M.; Deitel, P. J. Java: como programar. 3. ed. Bookman,
    2001.

  • SUN, Java Tutorial. http://java.sun.com/docs/books/tutorial/networking/sockets/index.html http://java.sun.com/docs/books/tutorial/networking/datagrams/index.h tml

Redes de Computadores

13
13