Sistemas Distribuídos

Slides:



Advertisements
Apresentações semelhantes
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Advertisements

Novas Tecnologias Microsoft.
ADO.NET (cont.). 1 Acesso a Bases de DadosADO.NET Namespace System.Data Modos de aceder à informação OLE DB – namespace System.Data.OleDb SQL - namespace.
Shop Notas de implementação [Exercício da Disciplina de ADAV]
Comunicação entre processos distribuídos
Profa. Ana Cristina Benso da Silva Disciplina: Redes de Computadores
Projeto de Sistemas de Software Luana Lachtermacher
1 Java: Tratamento de Exceções Alcides Calsavara.
Dúvidas surgidas na aula prática de BCB. 2 Alocação de espaços int m = 3; // THE NUMBER OF ROWS. int n = 5; // THE NUMBER OF COLUMNS. data = new long.
Ronaldo Celso Messias Correia
Sistemas Operacionais
Técnicas e Projeto de Sistemas André Mesquita Rincon Processo de Software Técnico Subsequente – Módulo III.
INTRODUÇÃO À COMPUTAÇÃO PARALELA
Trac é uma ferramenta open source e de interface web para controle de projetos de desenvolvimento de software. O objetivo do software é ajudar o desenvolvedor.
Prof. Marcelo Diniz Fonte:
Sistemas Operacionais
Prof. Dr. Helder Anibal Hermini
Boa tarde, pessoal!!.
Modelando com UML CMP 231 – Sistemas Embarcados
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Aplicação GeneAl Treinamento no GRADEp Aplicação GeneAl.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Publicidade e Propaganda - Conceitos e categorias 1° PPN Lucas Vinícius.
Servidores e Programação Web Redes de Computadores.
1 Oi BlackBerry. 2 Índice 1Configurando o seu aparelho BlackBerry 2Formatando o seu aparelho BlackBerry 3Solicitando senha de ativação empresarial 4Indicador.
Introdução Software para Laboratórios de Análises Clínicas
CT-300 – Seminário de Tese 1/25 Um Framework Padrão para Simulação de Modelos de Robôs Móveis de Robôs Móveis Juliano A. Pereira Prof. Carlos H. C. Ribeiro.
ITA - Instituto Tecnológico de Aeronáutica Aula #1.1 – Tutorial de Web Services utilizando o VS.NET Disciplina: CE 262 – Ontologias e Web Semântica. Prof.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
SISTEMA DE GESTÃO DE ESTÁGIO – SGE PUC MINAS Instruções para Entrega de Relatório de Estágio através do SGA Aluno.
FUNDAÇÃO CARLOS CHAGAS
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
Representações na base decimal e binária
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
Redes Embutidas - Prof a Luiza Mourelle 1 1 Topologias As topologias de redes intrachip podem ser agrupadas em duas classes principais: as redes diretas.
Adriano Santiago Wilber Garcia Pereira
Elaine Harada Teixeira de Oliveira – DCC – ICE - UFAM
Entendendo as definições de classe
LINGUAGENS DE PROGRAMAÇÃO
Internet Aula 03. Histórico Durante a guerra fria, os EUA tiveram a necessidade de interligar laboratórios que trabalhavam para os militares; Essa interligação.
Conceitos Básicos de Redes de Computadores e acesso a Internet
Sistemas Operacionais e Windows XP Aula 04 – DCA0302.
Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes.
Programação Concorrente com Thread Java
Empreendedorismo Prof. Dr. José Dornelas.
SUPERVISÃO E CONTROLE OPERACIONAL DE SISTEMAS
Comunicação CLP através do Driver OPC
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
Professor: Hyggo Almeida
Prof. Eduardo Mantovani Prof. Fábio de P. Santos AES 2007.
Sincronização com Locks. Locks É um mecanismo de sincronização de processos/threads em que estas devem ser programadas de modo que seus efeitos sobre.
JAVA MULTITHREADING TECHNIQUES
Anália Lima (alc5) Bruno Gentilini (bgda) Eduardo Souza (efs) Ivan França (ilfn) Infra-Estrutura de comunicação Aula Prática Programação de Sockets TCP.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
Java em Redes de Computadores
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Professor: Paulo Gonçalves CIn/UFPE.
DataColumnDataColumn DataColumnDataColumn DataRow DataRow DataRow DataRow DataRow DataRow DataRow DataRow DataRow DataRow DataRelation.
Aula Gráfica de LP2 Professor: André Santos Monitor: José Edson.
Java Generics Adeline de Sousa Silva.
Alisson Rafael Appio SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor Alisson Rafael Appio
Universidade Federal do Rio de Janeiro COPPE/MBE
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Soquetes (1) SOCKET Uma interface local, criada por aplicações, ponto final de comunicação no qual os processos de aplicação podem tanto enviar quanto.
AsyncTask e Socket no Android
Aula 05 Pilha TCP/IP.
Redes de Computadores 5º Semestre Aula 07 Prof
TCP vs UDP CRD Filipe Pacheco.
Visual Basic TCP.
Programação Orientada a Objetos
Transcrição da apresentação:

Sistemas Distribuídos José Pacheco de Almeida Prado Socket em C# Capítulo 3

Comunicação via socket com C# Socket é o elo de ligação entre os processos do servidor e do cliente. Ele é a “porta” na qual os processos enviam e recebem mensagens. De acordo com JAMES F KUROSE: “socket é a interface entre a camada de aplicação e a de transporte dentro de uma máquina”. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Comunicação via socket com C# Através de um socket podemos estabelecer a comunicação entre máquinas possibilitando o envio e recebimento de dados. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Comunicação via socket com C# A interface padronizada de sockets surgiu originalmente no sistema operacional Unix BSD (Berkeley Software Distribution). Tinha a função de suporte a comunicação em rede. Esta interface é a base para a maioria das interfaces entre protocolos de internet TCP/IP existente. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Comunicação via socket com C# Através de um socket podemos estabelecer a comunicação entre máquinas possibilitando o envio e recebimento de dados. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Comunicação via socket com C# A identificação de um socket na rede é realizada por um IP e um porta. Comumente utiliza-se portas acima de 1000 pois as inferiores são utilizadas pelo sistema operacional. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Comunicação via socket com C# Sua comunicação é realizada pelos protocolos UDP ou TCP. Assim, é possível termos tanto comunicação orientada a conexão (via TCP), quanta não orientada a conexão (via UDP). O socket abstrai esse conceito, permitindo assim a utilização de qualquer um dos meios. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando uma aplicação com Socket Temos que criar uma aplicação Servidor e outra Cliente. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Servidor Criar um projeto do tipo WindowsForm com o nome ServidorSocket. Incluir um botão que será utilizado para enviar mensagem do servidor para o cliente. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Servidor Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando uma aplicação com Socket No C# para se trabalhar com sockets os recursos encontram-se no namespace System.Net.Sockets. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando uma aplicação com Socket using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Net; using System.Net.Sockets; using System.Threading; Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando uma aplicação com Socket using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Net; using System.Net.Sockets; using System.Threading; Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Servidor O Servidor quanto o Cliente trabalha com processamento em paralelo (Thread) para evitar que a aplicação fique travada até o término do processamento, ou para manter um processamento dedicado e contínuo que é o caso do servidor. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Thread public Form1() { InitializeComponent(); thread = new Thread(new ThreadStart(RunServidor)); thread.Start(); } Sistemas Distribuídos – prof. Pacheco 25/03/2017

Thread Executa o Socket public void RunServidor() { } Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Servidor No exemplo, para realizar a comunicação o Servidor utiliza o objeto TcpListener que fica escutando toda requisição no IP 127.0.0.1 porta 2001. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Iniciando o Socket public void RunServidor() { TcpListener tcpListener; try IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2001); tcpListener = new TcpListener(ipEndPoint); tcpListener.Start(); MessageBox.Show("Servidor habilitado e escutando porta...", "Servidor"); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Iniciando o Socket public void RunServidor() { TcpListener tcpListener; try IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2001); tcpListener = new TcpListener(ipEndPoint); tcpListener.Start(); MessageBox.Show("Servidor habilitado e escutando porta...", "Servidor"); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Esperando Cliente... tcpListener.Start(); MessageBox.Show("Servidor habilitado e escutando porta...", "Servidor"); socket = tcpListener.AcceptSocket(); networkStream = new NetworkStream(socket); binaryWriter = new BinaryWriter(networkStream); binaryReader = new BinaryReader(networkStream); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Esperando Cliente... tcpListener.Start(); MessageBox.Show("Servidor habilitado e escutando porta...", "Servidor"); socket = tcpListener.AcceptSocket(); networkStream = new NetworkStream(socket); binaryWriter = new BinaryWriter(networkStream); binaryReader = new BinaryReader(networkStream); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Definindo um Fluxo de Dados para a Rede.... tcpListener.Start(); MessageBox.Show("Servidor habilitado e escutando porta...", "Servidor"); socket = tcpListener.AcceptSocket(); networkStream = new NetworkStream(socket); binaryWriter = new BinaryWriter(networkStream); binaryReader = new BinaryReader(networkStream); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Conectando ao Cliente... networkStream = new NetworkStream(socket); binaryWriter = new BinaryWriter(networkStream); binaryReader = new BinaryReader(networkStream); MessageBox.Show("Conexão Realizada!", "Servidor"); binaryWriter.Write("\nConexão Efetuada!"); string messageReceived = ""; do { messageReceived = binaryReader.ReadString(); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Conectando ao Cliente... networkStream = new NetworkStream(socket); binaryWriter = new BinaryWriter(networkStream); binaryReader = new BinaryReader(networkStream); MessageBox.Show("Conexão Realizada!", "Servidor"); binaryWriter.Write("\nConexão Efetuada!"); string messageReceived = ""; do { messageReceived = binaryReader.ReadString(); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Enquanto isto no lado do Cliente... networkStream = new NetworkStream(socket); binaryWriter = new BinaryWriter(networkStream); binaryReader = new BinaryReader(networkStream); MessageBox.Show("Conexão Realizada!", "Servidor"); binaryWriter.Write("\nConexão Efetuada!"); string messageReceived = ""; do { messageReceived = binaryReader.ReadString(); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Loop de Espera MessageBox.Show("Conexão Realizada!", "Servidor"); binaryWriter.Write("\nConexão Efetuada!"); string messageReceived = ""; do { messageReceived = binaryReader.ReadString(); MessageBox.Show("Mensagem: " + messageReceived, "Servidor"); } while (socket.Connected); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Loop de Espera MessageBox.Show("Conexão Realizada!", "Servidor"); binaryWriter.Write("\nConexão Efetuada!"); string messageReceived = ""; do { messageReceived = binaryReader.ReadString(); MessageBox.Show("Mensagem: " + messageReceived, "Servidor"); } while (socket.Connected); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Fim da Conexão } while (socket.Connected); catch (Exception ex) { MessageBox.Show(ex.Message); } finally binaryReader.Close(); binaryWriter.Close(); networkStream.Close(); socket.Close(); MessageBox.Show("Conexão Finalizada", "Servidor"); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Fim da Conexão } while (socket.Connected); catch (Exception ex) { MessageBox.Show(ex.Message); } finally binaryReader.Close(); binaryWriter.Close(); networkStream.Close(); socket.Close(); MessageBox.Show("Conexão Finalizada", "Servidor"); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Botão Envia try { binaryWriter.Write("Olá Mundo!!!!” ); } catch (SocketException socketEx) MessageBox.Show(socketEx.Message, "Erro"); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Botão Envia try { binaryWriter.Write("Olá Mundo!!!!” ); } catch (SocketException socketEx) MessageBox.Show(socketEx.Message, "Erro"); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Cliente O Cliente tem uma estrutura semelhante ao do Servidor. Seu funcionamento também é baseado em uma Thread. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Thread public Form1() { InitializeComponent(); thread = new Thread(new ThreadStart(RunCliente)); thread.Start(); } Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Cliente Na aplicação Cliente o objeto TcpClient é informado sobre o IP (ou DNS) e porta do servidor que irá se conectar. Após esse a realização toda a comunicação é feita por meio de stream através do objeto NetworkStream. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Cliente Na aplicação Cliente o objeto TcpClient é informado sobre o IP (ou DNS) e porta do servidor que irá se conectar. Após esse a realização toda a comunicação é feita por meio de stream através do objeto NetworkStream. Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Cliente private NetworkStream networkStream; private BinaryWriter binaryWriter; private BinaryReader binaryReader; private TcpClient tcpClient; private Thread thread; Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Cliente public void RunCliente() { try tcpClient = new TcpClient(); tcpClient.Connect("127.0.0.1", 2001); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Cliente public void RunCliente() { try tcpClient = new TcpClient(); tcpClient.Connect("127.0.0.1", 2001); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Implementando o Cliente { tcpClient = new TcpClient(); tcpClient.Connect("127.0.0.1", 2001); networkStream = tcpClient.GetStream(); binaryWriter = new BinaryWriter(networkStream); binaryReader = new BinaryReader(networkStream); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Enquanto isto no Servidor.... networkStream = new NetworkStream(socket); binaryWriter = new BinaryWriter(networkStream); binaryReader = new BinaryReader(networkStream); MessageBox.Show("Conexão Realizada!", "Servidor"); binaryWriter.Write("\nConexão Efetuada!"); string messageReceived = ""; do { messageReceived = binaryReader.ReadString(); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Loop de Espera String message = ""; do { try message = binaryReader.ReadString(); MessageBox.Show(message, "Mensagem Recebida"); } catch (Exception ex) MessageBox.Show(ex.Message, "Erro"); message = "FIM"; } while (message != "FIM"); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Loop de Espera String message = ""; do { try message = binaryReader.ReadString(); MessageBox.Show(message, "Mensagem Recebida"); } catch (Exception ex) MessageBox.Show(ex.Message, "Erro"); message = "FIM"; } while (message != "FIM"); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Botão Envia try { binaryWriter.Write("O cliente está ativo!!!!"); } catch (SocketException socketEx) MessageBox.Show(socketEx.Message, "Erro"); Sistemas Distribuídos – prof. Pacheco 25/03/2017

Erro na Conexão Sistemas Distribuídos – prof. Pacheco 25/03/2017