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 Exercício Bibliografia Exemplo de aplicação Redes de Computadores 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
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 estalebecimento da conexão n troca de informações encerramento da conexão Redes de Computadores 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
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
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
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
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
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
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
Exercício Desenvolver uma aplicação de bate-papo na sua linguagem de preferência. Redes de Computadores 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