コード例 #1
0
        static void Main(string[] args)
        {
            //tiempo para dormir el proceso
            Thread.Sleep(500);
            // se define la ip del servidor a conectarse
            IPAddress servidor = IPAddress.Parse("127.0.0.1");
            //se especifica el puerto por el cual debe conectarse
            int puerto = 8082;
            //se crea un pnto remoto que será el servidor al que nos conectaremos
            IPEndPoint extremo = new IPEndPoint(servidor, puerto);
            //se crea un cliente tcp para proceder a la solicitud de conexión conexión
            TcpClient cliente = new TcpClient();

            cliente.Connect(extremo);


            //Se llama al método get stream usando network stream para envío y
            //recepción de bytes
            NetworkStream flujoRed = cliente.GetStream();
            // Se crean los elementos que serán enviados
            Elemento elemento = new Elemento(1234567890987654L, "Cadena de Bicicleta", 18, 1000, true, false);
            //se procede a la codificación del elemento, y se los transforma en bytes para su envío
            CodificadorTexto codificador = new CodificadorTexto();

            byte[] datosCodificados = codificador.Codificar(elemento);
            Console.WriteLine("Enviando elemento codificado en texto (" + datosCodificados.Length + " bytes): ");
            Console.WriteLine(elemento);
            // se procede a recuperar los datos enviados.
            flujoRed.Write(datosCodificados, 0, datosCodificados.Length);



            DecodificadorBinario decodificador    = new DecodificadorBinario();
            Elemento             elementoRecibido = decodificador.Decodificar(cliente.GetStream());

            Console.WriteLine("Se recibio un elemento codificado en formato binario:");
            Console.WriteLine(elementoRecibido);

            // ### Modifica el programa para enviar dos elementos y recibir dos elementos.
            // ### Si  se requiere ver el funcionamiento original del programa comente las siguientes
            // ### lineas hasta encontrar la linea //###

            elemento = new Elemento(1234567890123456L, "Bicicleta", 18, 50000, true, true);
            //se procede a la codificación del elemento, y se los transforma en bytes para su envío
            codificador      = new CodificadorTexto();
            datosCodificados = codificador.Codificar(elemento);
            Console.WriteLine("Enviando elemento codificado en texto (" + datosCodificados.Length + " bytes): ");
            Console.WriteLine(elemento);
            // se procede a recuperar los datos enviados.
            flujoRed.Write(datosCodificados, 0, datosCodificados.Length);
            decodificador    = new DecodificadorBinario();
            elementoRecibido = decodificador.Decodificar(cliente.GetStream());
            Console.WriteLine("Se recibio un elemento codificado en formato binario:");
            Console.WriteLine(elementoRecibido);

            //###



            //se Cierra el network stream para finalizar la conexión adecuadamente
            flujoRed.Close();
            //se cierra la conexión con el cliente
            cliente.Close();
        }
コード例 #2
0
ファイル: Cliente.cs プロジェクト: Esteban008/PracticaFraming
        static void Main(string[] args)
        {
            //Tiempo que pasa dormido el cliente
            Thread.Sleep(500);

            //Creamos el socket para poder comunicarnos con el servidor
            IPAddress  servidor = IPAddress.Parse("127.0.0.1");
            int        puerto   = 8080;
            IPEndPoint extremo  = new IPEndPoint(servidor, puerto);

            //Creamos un cliente TCP y nos conectamos
            TcpClient cliente = new TcpClient();

            cliente.Connect(extremo);

            //Nos proporciona la secuencia de datos para el acceso a la red
            NetworkStream flujoRed = cliente.GetStream();

            Elemento elemento1 = new Elemento(1234567890987654L, "Cadena de Bicicleta", 18, 1000, true, false);

            //Modifiacion para enviar dos elementos

            Elemento elemento2 = new Elemento(987654321012345L, "Casco de Bicicleta", 20, 45, true, true);


            //Utilizamos la libreria que creamos con el metodo Codificador Texto
            CodificadorTexto codificador = new CodificadorTexto();

            byte[] datosCodificados = codificador.Codificar(elemento1);
            Console.WriteLine("Enviando elemento codificado en texto (" + datosCodificados.Length + " bytes): ");
            Console.WriteLine(elemento1);

            NetworkStream flujoRed2 = cliente.GetStream();

            CodificadorTexto codificador1 = new CodificadorTexto();

            byte[] datosCodificados1 = codificador1.Codificar(elemento2);
            Console.WriteLine("Enviando elemento codificado en texto (" + datosCodificados1.Length + " bytes): ");
            Console.WriteLine(elemento2);

            //Procedemos a enviar los datos por la red

            flujoRed.Write(datosCodificados, 0, datosCodificados.Length);
            flujoRed2.Write(datosCodificados1, 0, datosCodificados1.Length);

            //Como tenemos un servidor ECO, ahora tenemos que realizar el rproceso contrario, el decodificador.

            DecodificadorBinario decodificador    = new DecodificadorBinario();
            Elemento             elementoRecibido = decodificador.Decodificar(cliente.GetStream());

            DecodificadorBinario decodificador1    = new DecodificadorBinario();
            Elemento             elementoRecibido1 = decodificador1.Decodificar(cliente.GetStream());

            //Impresion del texto recibido
            Console.WriteLine("Se recibio un elemento codificado en formato binario:");
            Console.WriteLine(elementoRecibido);

            Console.WriteLine("Se recibio un elemento codificado en formato binario:");
            Console.WriteLine(elementoRecibido1);

            flujoRed.Close();
            cliente.Close();
        }