You are on page 1of 3

C:\Users\Sailey\Documents\Visual Studio 2013\Projects\ConsoleApplication4\ConsoleApplication4\Program.

cs 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;

public class NetworkServer
{

    public static void Main()
    {

        //creamos un thread para que el server

        //se ejecute en paralelo con el cliente

        //esto es solo por motivos prácticos del demo

        new Thread(new ThreadStart(

            delegate
            {

                new NetworkServer().Start();
            }

                    )).Start();
        
        //Iniciamos el Cliente

        new Client().Connect();

        Console.WriteLine("Listo");

        Console.Read();
        
    }
    public void Start()
    {

        // Creamos un TcpListener y le indicamos que

        //puerto va a poner en escucha.

        TcpListener tcpListener = new TcpListener(9898);

        //Iniciamos la esucha

        tcpListener.Start();

        //Este método queda bloqueado hasta que

        //se conecte un cliente

        Socket socketForClient = tcpListener.AcceptSocket();

        if (socketForClient.Connected)
        {
            // Si se conecta

            Console.WriteLine("Cliente conectado.");

            //Creamos el networkSream, el Reader y el writer

            NetworkStream networkStream = new NetworkStream(socketForClient);
C:\Users\Sailey\Documents\Visual Studio 2013\Projects\ConsoleApplication4\ConsoleApplication4\Program.cs 2

            StreamWriter streamWriter = new StreamWriter(networkStream);
            
            StreamReader streamReader = new StreamReader(networkStream);
            
            //Esta es la data a enviar.

            string theString = "Esta es la data de envio";

            try
            {
                //Escribimos la data en el stream

                streamWriter.WriteLine(theString);

                //Ahora le decimos que la mande.

                streamWriter.Flush();

                //Esperamos data del cliente

                //Y la escribimos por consola.

                theString = streamReader.ReadLine();

                Console.WriteLine(theString);
            }

            finally
            {
                //Cerramos las conexiones

                streamReader.Close();

                streamWriter.Close();

                networkStream.Close();

                socketForClient.Close();
            }

        }

    }

public class Client
{
    public void Connect()
    {

        TcpClient socketForServer;

        string server = "localhost";

        try
        {

            //Creamos un TcpCliente y le pasamos

            //el server y el puerto.

            socketForServer = new TcpClient(server, 9898);
C:\Users\Sailey\Documents\Visual Studio 2013\Projects\ConsoleApplication4\ConsoleApplication4\Program.cs 3

        }

        catch
        {

            Console.WriteLine(

            "No se pudo conectar a {0}:9898", server);

            return;

        }

        //aqui es lo mismo que en el server. Usamos StreamWriter y Reader.

        NetworkStream networkStream = socketForServer.GetStream();

        StreamReader streamReader =

            new System.IO.StreamReader(networkStream);

        StreamWriter streamWriter =

                 new System.IO.StreamWriter(networkStream);

        try
        {

            string outputString = streamReader.ReadLine();

            Console.WriteLine(outputString);

            streamWriter.WriteLine("Mensaje desde el Cliente");

            streamWriter.Flush();

        }

        catch
        {

            Console.WriteLine("Exception reading from Server");

        }

        finally
        {

            networkStream.Close();

        }

    }

You might also like