public void EjecutarComandoInterno() { try { //Buffers Byte[] BufferFuncion = new Byte[2048]; Byte[] BufferArgumentos = new Byte[2048]; //Recibir el nombre del metodo Cliente.Client.Receive(BufferFuncion); //Decodificarlo String SFuncion = Encoding.ASCII.GetString(BufferFuncion); //Buscar el metodo Type Comandos = typeof(ComandosInternos); MethodInfo Metodo = Comandos.GetMethod(SFuncion); //Alertar al servidor si el metodo fue encontrado if (Metodo != null) Cliente.Client.Send(Encoding.ASCII.GetBytes("Encontrada")); else { Cliente.Client.Send(Encoding.ASCII.GetBytes("No encontrada")); return; } //Una lsta de los parametros que envia el servidor List<String> Parametros = new List<String>(); Cliente.Client.Receive(BufferArgumentos); String Buffer = Encoding.ASCII.GetString(BufferArgumentos); //Mientras hayan parametros, añadirlos... while (Buffer != "Fin Comando") { Parametros.Add(Buffer); BufferArgumentos.Limpiar(); Cliente.Client.Receive(BufferArgumentos); Buffer = Encoding.ASCII.GetString(BufferArgumentos); } Object Retorno = Metodo.Invoke(null, new object[1] { Parametros.ToArray() as object[] }); Cliente.Client.Send(Encoding.ASCII.GetBytes(Retorno.ToString())); } catch { return; } }