1 / 12

Infra-Estrutura de comunicação

Infra-Estrutura de comunicação. Aula Prática Programação de Sockets TCP e UDP. Anália Lima ( alc5 ) Bruno Gentilini ( bgda ) Eduardo Souza ( efs ) Ivan França ( ilfn ). Professor: Paulo Gonçalves ( pasg@cin.ufpe.br ) CIn /UFPE. Protocolos Camada Transporte . TCP

keilah
Download Presentation

Infra-Estrutura de comunicação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Infra-Estrutura de comunicação Aula Prática Programação de Sockets TCP e UDP Anália Lima (alc5) Bruno Gentilini (bgda) Eduardo Souza (efs) Ivan França (ilfn) Professor: Paulo Gonçalves (pasg@cin.ufpe.br) CIn/UFPE

  2. Protocolos Camada Transporte • TCP • Orientado à conexão; • Transporte confiável; • Controle de fluxo; • Controle de congestionamento; • UDP • Não orientado à conexão;

  3. Comunicação entre processos • Processos em hosts distintos comunicam-se por meio de envio de mensagens... • enviadas e recebidas através de seu socket • O que é um socket?

  4. O que é um socket? • Socket é a interface entre a camada de aplicação e a de transporte

  5. Programação de socket TCP- Client importjava.io.*; importjava.net.*; importjava.util.Scanner; publicclassTCPclient { publicstaticvoidmain(String[] args) throws Exception { //lendo do teclado String inFromUser = new Scanner(System.in).next(); //criando um socket TCP Socketsock = newSocket("localhost", 2000); //stream de saida DataOutputStreamsocketOut = newDataOutputStream(sock.getOutputStream()); socketOut.writeBytes(inFromUser + '\n'); //resposta do servidor BufferedReadersocketIn = newBufferedReader(newInputStreamReader(sock.getInputStream())); System.out.println(socketIn.readLine()); } }

  6. Programação de socket TCP - Server importjava.io.*; importjava.net.*; publicclassTCPserver { publicstaticvoidmain(String argv[]) throws Exception { String inFromClient; String outToClient; //socket de "boas vindas" ServerSocketwelcomeSocket = newServerSocket(2000); while(true) { //socket de conexão TCP Socketsock = welcomeSocket.accept(); //buffer de entrada, que recebe um stream BufferedReadersocketIn = newBufferedReader(newInputStreamReader(sock.getInputStream())); inFromClient = socketIn.readLine(); outToClient = inFromClient.toUpperCase() + '\n'; //stream de saida DataOutputStreamsocketOut = newDataOutputStream(sock.getOutputStream());//stream de saida //escrevendo no socket socketOut.writeBytes(outToClient); sock.close(); } } }

  7. Exercício • Faça um “Hello [endereço IP do servidor]” e retorne do servidor um “Ok [endereço IP do cliente]”

  8. Exercício • Faça um “Hello [endereço IP do servidor]” e retorne do servidor um “HELLO [endereço IP do cliente]” • OBS: O cliente deve fechar a conexão após receber a resposta do servidor ou dar um timeout de 30 segundos.

  9. Programação de socket UDP- Client importjava.net.*; importjava.util.Scanner; classUDPclient { publicstaticvoidmain(String args[]) throws Exception { String inFromUser = new Scanner(System.in).next() + '\n'; //entrada do usuário DatagramSocketclientSocket = newDatagramSocket(); //socket UDP InetAddressIPServer = InetAddress.getByName("localhost"); //IP do servidor byte[] sendData = new byte[1024]; //dados a serem enviados sendData = inFromUser.getBytes(); //criando o pacote de envio DatagramPacketsendPacket = newDatagramPacket(sendData, sendData.length, IPServer, 5000); clientSocket.send(sendPacket); byte[] receiveData = new byte[1024]; //dados recebidos DatagramPacketreceivePacket = newDatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); //recebendo o pacote String inFromServer = new String(receivePacket.getData()); System.out.println("FROM SERVER: " + inFromServer); clientSocket.close(); } }

  10. Programação de socketUDP-Server importjava.net.*; classUDPserver { publicstaticvoidmain(String args[]) throws Exception { DatagramSocketserverSocket = newDatagramSocket(5000); byte[] receiveData = new byte[1024] , sendData = new byte[1024]; String inFromClient, outToClient; InetAddressclientIP; intport; while(true) { //pacote a ser recebido DatagramPacketreceivePacket = newDatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); //recebendo o pacotes inFromClient = new String(receivePacket.getData()); //colocando na string os dados recebidos clientIP = receivePacket.getAddress(); //pegando o IP e porta do pacote que chegou port = receivePacket.getPort(); outToClient = inFromClient.toUpperCase(); sendData = outToClient.getBytes(); //enviandopacote de resposta DatagramPacketsendPacket = newDatagramPacket(sendData, sendData.length, clientIP, port); serverSocket.send(sendPacket); } } }

  11. Exercício • Faça, por meio de uma conexão UDP, o cliente enviar dois números e o servidor responder com a soma deles. • OBS: O cliente deve encerrar após receber a resposta do servidor ou dar um timeout de 30 segundos.

  12. Referências • James F. Kuroseand Keith W. Ross, "Redes de Computadores e a Internet - Uma Nova Abordagem", 3a. edição - 2005 - Ed. Addison Wesley BRA • Slides anteriores da monitoria feitos por flávioalmeida (faas).

More Related