InfraEstrutura de comunicao Aula Prtica Programao de Sockets

  • Slides: 12
Download presentation
Infra-Estrutura de comunicação Aula Prática Programação de Sockets TCP e UDP Anália Lima (alc

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

Protocolos Camada Transporte �TCP �Orientado à conexão; �Transporte confiável; �Controle de fluxo; �Controle de

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

Comunicação entre processos �Processos em hosts distintos comunicam-se por meio de envio de mensagens.

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?

O que é um socket? �Socket é a interface entre a camada de aplicação

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

Programação de socket TCP- Client import java. io. *; import java. net. *; import

Programação de socket TCP- Client import java. io. *; import java. net. *; import java. util. Scanner; public class TCPclient { public static void main(String[] args) throws Exception { //lendo do teclado String in. From. User = new Scanner(System. in). next(); //criando um socket TCP Socket sock = new Socket("localhost", 2000); //stream de saida Data. Output. Stream socket. Out = new Data. Output. Stream(sock. get. Output. Stream()); socket. Out. write. Bytes(in. From. User + 'n'); //resposta do servidor Buffered. Reader socket. In = new Buffered. Reader(new Input. Stream. Reader(sock. get. Input. Stream())); System. out. println(socket. In. read. Line()); } }

Programação de socket TCP - Server import java. io. *; import java. net. *;

Programação de socket TCP - Server import java. io. *; import java. net. *; public class TCPserver { public static void main(String argv[]) throws Exception { String in. From. Client; String out. To. Client; //socket de "boas vindas" Server. Socket welcome. Socket = new Server. Socket(2000); while(true) { //socket de conexão TCP Socket sock = welcome. Socket. accept(); saida //buffer de entrada, que recebe um stream Buffered. Reader socket. In = new Buffered. Reader(new Input. Stream. Reader(sock. get. Input. Stream())); in. From. Client = socket. In. read. Line(); out. To. Client = in. From. Client. to. Upper. Case() + 'n'; //stream de saida Data. Output. Stream socket. Out = new Data. Output. Stream(sock. get. Output. Stream()); //stream de //escrevendo no socket. Out. write. Bytes(out. To. Client); sock. close(); } } }

Exercício � Faça um “Hello [endereço IP do servidor]” e retorne do servidor um

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

Exercício �Faça um “Hello [endereço IP do servidor]” e retorne do servidor um “HELLO

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.

Programação de socket UDP- Client import java. net. *; import java. util. Scanner; class

Programação de socket UDP- Client import java. net. *; import java. util. Scanner; class UDPclient { public static void main(String args[]) throws Exception { String in. From. User = new Scanner(System. in). next() + 'n'; //entrada do usuário Datagram. Socket client. Socket = new Datagram. Socket(); //socket UDP Inet. Address IPServer = Inet. Address. get. By. Name("localhost"); //IP do servidor byte[] send. Data = new byte[1024]; //dados a serem enviados send. Data = in. From. User. get. Bytes(); //criando o pacote de envio Datagram. Packet send. Packet = new Datagram. Packet(send. Data, send. Data. length, IPServer, 5000); client. Socket. send(send. Packet); byte[] receive. Data = new byte[1024]; //dados recebidos Datagram. Packet receive. Packet = new Datagram. Packet(receive. Data, receive. Data. length); client. Socket. receive(receive. Packet); //recebendo o pacote String in. From. Server = new String(receive. Packet. get. Data()); System. out. println("FROM SERVER: " + in. From. Server); client. Socket. close(); } }

Programação de socket UDP-Server import java. net. *; class UDPserver { public static void

Programação de socket UDP-Server import java. net. *; class UDPserver { public static void main(String args[]) throws Exception { Datagram. Socket server. Socket = new Datagram. Socket(5000); byte[] receive. Data = new byte[1024] , send. Data = new byte[1024]; String in. From. Client, out. To. Client; Inet. Address client. IP; int port; while(true) { //pacote a ser recebido Datagram. Packet receive. Packet = new Datagram. Packet(receive. Data, receive. Data. length); server. Socket. receive(receive. Packet); //recebendo o pacotes in. From. Client = new String(receive. Packet. get. Data()); //colocando na string os dados recebidos client. IP = receive. Packet. get. Address(); //pegando o IP e porta do pacote que chegou port = receive. Packet. get. Port(); out. To. Client = in. From. Client. to. Upper. Case(); send. Data = out. To. Client. get. Bytes(); //enviando pacote de resposta Datagram. Packet send. Packet = new Datagram. Packet(send. Data, send. Data. length, client. IP, port); server. Socket. send(send. Packet); } } }

Exercício �Faça, por meio de uma conexão UDP, o cliente enviar dois números e

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.

Referências �James F. Kurose and Keith W. Ross, "Redes de Computadores e a Internet

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