C# - Usando classes para a programação com a web (.NET Core) - VII


Hoje vamos apresentar algumas classes que facilitam a programação para web na linguagem C#.


Continuando a sexta parte do artigo vamos criar um cliente usando sockets.

 

No artigo anterior criamos um Servidor usando Sockets e agora vamos criar a aplicação cliente que vai estabelecer a conexão com o servidor e enviar mensagens.
 

Esta atuando no paradigma cliente/servidor que possui a seguinte seqüência de ações :
 

Cliente Servidor
Cria um socket e atribui-lhe um endereço cria um socket e atribui-lhe um endereço. Este endereço deve ser conhecido pelo cliente.
Solicita a conexão do seu socket ao socket do servidor (conhece o endereço ) Aguarda a conexão de um cliente
Aguarda que a conexão seja estabelecida Aceita a conexão e cria um novo socket para comunicar com o cliente em causa
Envia uma mensagem ( request ) Recebe a mensagem no novo socket
Recebe a mensage de resposta (reply) Envia mensagem de resposta (reply)
Fecha a conexão com o servidor fecha a conexão com o cliente

 

Criando um cliente usando Sockets

 

Vamos criar um projeto .NET Core tipo Console no VS 2017 Community chamado ClienteTeste.

 

Na aplicação console abra o arquivo Program e inclua o código abaixo:

 

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace ClienteTeste
{
    class Program
    {
        static void Main(string[] args)
        {
            IniciaCliente();
            return;
        }
        public static void IniciaCliente()
        {
            byte[] bytes = new byte[1024];
            try
            {
                // Conecta com um servidor Remoto  
                // Pega o endereço IP do Host usado para conexão
                IPHostEntry host = Dns.GetHostEntry("localhost");
                IPAddress ipAddress = host.AddressList[0];
                IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000);
                // cria um socket TCP/IP 
                Socket sender = new Socket(ipAddress.AddressFamily,
                    SocketType.Stream, ProtocolType.Tcp);
                // Conecta o socket com o endpoint remoto
                try
                {
                    // Faz a conexão com o endpoint remoto
                    sender.Connect(remoteEP);
                    Console.WriteLine("Socket conectado com {0} ",
                        sender.RemoteEndPoint.ToString());
                    // Codifica os dados no formato string para um array de bytes
                    byte[] msg = Encoding.ASCII.GetBytes("Teste de mensagem<EOF>");
                    // Envia os dados via socket
                    int bytesSent = sender.Send(msg);
                    // Recebe a resposta do dispositivo remoto
                    int bytesRec = sender.Receive(bytes);
                    Console.WriteLine("Teste ecoou... = {0}",
                        Encoding.ASCII.GetString(bytes, 0, bytesRec));
                    // Libera o socket.    
                    sender.Shutdown(SocketShutdown.Both);
                    sender.Close();
                } // trata as exceções
                catch (ArgumentNullException ane)
                {
                    Console.WriteLine("ArgumentNullException : {0}", ane.ToString());
                }
                catch (SocketException se)
                {
                    Console.WriteLine("SocketException : {0}", se.ToString());
                }
                catch (Exception e)
                {
                    Console.WriteLine("Unexpected exception : {0}", e.ToString());
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }
}

 

Agora, temos dois projetos prontos : o Servidor e o Cliente.

 

Vamos testar executando o projeto Servidor e a seguir o projeto Cliente a partir da linha de comando. Você verá que a mensagem enviada pelo cliente é lida e exibida pelo ouvinte.

Depois que o cliente for executado, você verá a mensagem enviada ao servidor conforme mostra a figura abaixo:
 

 

Fique a vontade para melhorar os projetos.
 

Pegue o projeto completo aqui:   ClienteTeste.zip
 

"Amo ao SENHOR, porque ele ouviu a minha voz e a minha súplica.
Porque inclinou a mim os seus ouvidos; portanto, o invocarei enquanto viver."
Salmos 116:1,2

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti