none
Como hacer comunicación cliente->servidor / servidor -> cliente

    Question

  • Hola!

    Tengo el siguiente código de abajo, una comunicación entre dos dispositivos, uno cliente y otro servidor. La comunicación se da correctamente, el cliente manda un mensaje y le llega al servidor. Mi necesidad viene siendo que cuando le mando un mensaje al servidor, este deja de escuchar, solo acepta uno y se acabo, y otra que necesito hacer que el servidor le responda al cliente.

    Las preguntas serían estas:

    ¿Como cambio mi código (que ya funciona) para que exista una comunicación cliente->servidor/servidor->cliente intercambio de mensajes como chat?

    ¿Como para que mi cliente después se haga servidor y mi servidor después cliente?

    CÓDIGO DEL CLIENTE

        class Cliente
        {
            static Socket MiSocket;
    
            static void Main(string[] args)
            {
                MiSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint LocalEndPoint= new IPEndPoint(IPAddress.Parse("10.23.136.24"),1234);
    
                try
                {
                    MiSocket.Connect(LocalEndPoint);
                    
                }
    
                catch (Exception ex)
                {
                    Console.Write("Ocurrió un error al tratar de conectarse. Detalle: "+ ex.Message);
                }
    
                Console.Write("Escribe un texto");
                string Texto = Console.ReadLine();
                byte[] Datos = Encoding.ASCII.GetBytes(Texto);
    
                MiSocket.Send(Datos);
                Console.Write("Datos enviados");
                Console.Read();
            }
    
        }
    CÓDIGO DEL SERVIDOR
        class Servidor
        {
            static byte[] Buffer;
            static Socket MiSocket;
    
            static void Main(string[] args)
            {
                MiSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                MiSocket.Bind(new IPEndPoint(0, 1234));
                MiSocket.Listen(100);
    
                Socket SocketAceptado = MiSocket.Accept();
                Buffer = new byte[SocketAceptado.SendBufferSize];
                int BytesLeidos = SocketAceptado.Receive(Buffer);
                byte[] Formateado = new byte[BytesLeidos];
    
                for (int i = 0; i < BytesLeidos; i++)
                    Formateado[i] = Buffer[i];
    
                string Datos = Encoding.ASCII.GetString(Formateado);
    
                Console.WriteLine(Datos + "\n");
                Console.Read();
    
                MiSocket.Close();
                SocketAceptado.Close();
            }
        }

    Gracias!!

    Tuesday, April 03, 2012 1:00 AM

Answers

  • es que para esoel cliente tambien deberia implementarse como server, pero al establecer la comunciacion con el server real informa en que puerto esta escuchando, el server registra esa info y cuando quiere comunciarse solo la usa

    el server mantiene la info de ip y puerto de todos los cliente que se conectan

    Socket Chat

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Tuesday, April 03, 2012 1:30 AM