Infra-Estrutura de comunicação

Click here to load reader

download Infra-Estrutura de comunicação

of 12

description

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 ( [email protected] ) CIn /UFPE. Protocolos Camada Transporte. TCP - PowerPoint PPT Presentation

Transcript of Infra-Estrutura de comunicação

Infra-Estrutura de comunicao

Anlia Lima (alc5)Bruno Gentilini (bgda)Eduardo Souza (efs)Ivan Frana (ilfn)Infra-Estrutura de comunicaoAula Prtica Programao de Sockets TCP e UDP

Professor: Paulo Gonalves ([email protected])CIn/UFPE

Protocolos Camada TransporteTCPOrientado conexo;Transporte confivel;Controle de fluxo;Controle de congestionamento;

UDPNo orientado conexo;Comunicao entre processosProcessos em hosts distintos comunicam-se por meio de envio de mensagens...

enviadas e recebidas atravs de seu socket

O que um socket?O que um socket?Socket a interface entre a camada de aplicao e a de transporte

Programao de socket TCP- Clientimport java.io.*;import java.net.*;import java.util.Scanner;

public class TCPclient {

public static void main(String[] args) throws Exception { //lendo do tecladoString inFromUser = new Scanner(System.in).next();//criando um socket TCPSocket sock = new Socket("localhost", 2000); //stream de saidaDataOutputStream socketOut = new DataOutputStream(sock.getOutputStream());socketOut.writeBytes(inFromUser + '\n');

//resposta do servidorBufferedReader socketIn = new BufferedReader(new InputStreamReader(sock.getInputStream()));System.out.println(socketIn.readLine());}}

Programao de socket TCP - Serverimport java.io.*;import java.net.*;

public class TCPserver {

public static void main(String argv[]) throws Exception {String inFromClient;String outToClient;//socket de "boas vindas"ServerSocket welcomeSocket = new ServerSocket(2000);

while(true) {//socket de conexo TCPSocket sock = welcomeSocket.accept();//buffer de entrada, que recebe um streamBufferedReader socketIn = new BufferedReader(new InputStreamReader(sock.getInputStream()));inFromClient = socketIn.readLine();outToClient = inFromClient.toUpperCase() + '\n';//stream de saidaDataOutputStream socketOut = new DataOutputStream(sock.getOutputStream());//stream de saida//escrevendo no socketsocketOut.writeBytes(outToClient);sock.close();}}}

ExerccioFaa um Hello [endereo IP do servidor] e retorne do servidor um Ok [endereo IP do cliente]

ExerccioFaa um Hello [endereo IP do servidor] e retorne do servidor um HELLO [endereo IP do cliente]

OBS: O cliente deve fechar a conexo aps receber a resposta do servidor ou dar um timeout de 30 segundos.

Programao de socket UDP- Clientimport java.net.*;import java.util.Scanner;

class UDPclient {

public static void main(String args[]) throws Exception {String inFromUser = new Scanner(System.in).next() + '\n'; //entrada do usurioDatagramSocket clientSocket = new DatagramSocket(); //socket UDPInetAddress IPServer = InetAddress.getByName("localhost"); //IP do servidorbyte[] sendData = new byte[1024]; //dados a serem enviadossendData = inFromUser.getBytes();//criando o pacote de envioDatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPServer, 5000);clientSocket.send(sendPacket);byte[] receiveData = new byte[1024]; //dados recebidosDatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);clientSocket.receive(receivePacket); //recebendo o pacote String inFromServer = new String(receivePacket.getData());System.out.println("FROM SERVER: " + inFromServer);clientSocket.close();} }

Programao de socket UDP-Serverimport java.net.*;class UDPserver {

public static void main(String args[]) throws Exception {DatagramSocket serverSocket = new DatagramSocket(5000);byte[] receiveData = new byte[1024] , sendData = new byte[1024];String inFromClient, outToClient;InetAddress clientIP; int port;while(true) {//pacote a ser recebidoDatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); //recebendo o pacotesinFromClient = new String(receivePacket.getData()); //colocando na string os dados recebidosclientIP = receivePacket.getAddress(); //pegando o IP e porta do pacote que chegouport = receivePacket.getPort();

outToClient = inFromClient.toUpperCase();sendData = outToClient.getBytes();//enviando pacote de respostaDatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientIP, port);serverSocket.send(sendPacket);} } }

ExerccioFaa, por meio de uma conexo UDP, o cliente enviar dois nmeros e o servidor responder com a soma deles.

OBS: O cliente deve encerrar aps receber a resposta do servidor ou dar um timeout de 30 segundos.

RefernciasJames F. Kurose and Keith W. Ross, "Redes de Computadores e a Internet - Uma Nova Abordagem", 3a. edio - 2005 - Ed. Addison Wesley BRA Slides anteriores da monitoria feitos por flvio almeida (faas).