SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: betitono1 en Viernes 30 de Enero de 2004, 18:57

Título: Aplicacion Para Control De Una Red Local
Publicado por: betitono1 en Viernes 30 de Enero de 2004, 18:57
Hola que tal como podira hacer una aplicacion para la ejecucion de otras aplicaciones en diferentes maquinas de una red.

-Controlar su ejecucion.
-Enviar informacion a estas.
-Que estas aplicaciones envien informacion a una que los controle, es decir que se comuniquen entre si.


Saludos.
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: QliX=D! en Viernes 30 de Enero de 2004, 19:21
Hola!.

Bueno eso es sencillo haces un protocolo que se monte sobre TCP/IP para el manejo y administracion remota.
O usas RPC.
No es complicado tipo, la idea es mandar paquetes deun lado a otro con lo que necesitas.

Pasa uqe tu aplicacion tendria que ser muy parametrizable... asi que no se.. bueno eso es un idea... slds.
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: _Viktor en Viernes 30 de Enero de 2004, 21:17
Bueno, en el fondo lo que se trata de decir en le mensaje anterior es que utilices socket's para enviar las "ordenes" al equipo que tiene que realizar las tareas, aqui te dejo la url para un ejemplo de su uso:

http://www.visualcomponentlibrary.com/bcb/sockets/socket.htm (http://www.visualcomponentlibrary.com/bcb/sockets/socket.htm)

Saludos!
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: betitono1 en Sábado 31 de Enero de 2004, 14:58
gracias por su respuesta pero tengo algunas preguntas, necesito una aplicacion principal que controle a las demas, se puede hacer?, deben estar ejecutandose alguna de las aplicaciones a ser controladas para que funcione la comunicaon o el programa principal puede hacer que se abra o cierre cuando quiera.


Saludos
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: _Viktor en Sábado 31 de Enero de 2004, 18:42
Hola, vamos que si lo piensas no es tan dificil, claro que puedes hacerlo con socket's, te doy una idea:

Supongamos que quieres enviar la orden de actualizar unos datos a la app cliente, puedes hacerlo de la siguiente forma:

Código: Text
  1. ServerSocket1->Socket->SendText("Actualizar");
  2.  

Luego en el evento OnRead del Socket cliente usas lo siguiente

Código: Text
  1. String sOrden = Socket->ReceiveText();
  2.  
  3. if(sOrden == "Actualizar")
  4.   {
  5.     //Realizar la actualizacion
  6.    
  7.   }
  8. else if(<Otra_Orden>)
  9. {
  10.   //Etc. etc.
  11. }
  12.  

Y mas aun podrias hacer una clase que te discrimine la accion para cada mensaje, asi a la hora de crear una instancia de tu clase podrias hacer alcomo como esto:

Código: Text
  1. TMiClase *Comando = new TMiClase(sOrden);
  2. Comando->Ejecutar();
  3.  

y por dentro de la clase discriminas la accion recibida y realizas al operacion asociada.

Espero te aclare algo, Saludos!
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: seth_los en Sábado 31 de Enero de 2004, 22:32
Hola _Victor esa ultima parte me interesa podrias hacer un ejemplo sencillo de como se podria implementar una clase con los textos recibidos me gustaria tener una idea mas clara...

Saludos

Seth
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: _Viktor en Domingo 1 de Febrero de 2004, 03:31
Aqui te dejo un ejemplo que se me ocurre asi , imagina una aplicacion Servidor que envia la orden de ejecutar o eliminar un archivo a la aplicacion cliente, he declarado la siguiente clase:

MiClase.h
Código: Text
  1.  
  2. //---------------------------------------------------------------------------
  3. #include <vcl.h>
  4. #ifndef MiClaseH
  5. #define MiClaseH
  6. //OPERACIONES
  7. #define EXEC 1
  8. #define DEL  2
  9. //---------------------------------------------------------------------------
  10. #endif
  11.  
  12. class MiClase
  13. {
  14.  private:
  15.    int  Accion;
  16.    String Fichero;
  17.  public:
  18.    void Ejecutar(void);
  19.    MiClase(int nOrden, String sArchivo);
  20. };
  21.  

MiClase.cpp

Código: Text
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "MiClase.h"
  4. //---------------------------------------------------------------------------
  5. #pragma package(smart_init)
  6.  
  7. void MiClase::Ejecutar()
  8. {
  9.  switch(this->Accion)
  10.  {
  11.   case EXEC:ShellExecute(0,"open",this->Fichero.c_str(),0,0,SW_SHOWDEFAULT);
  12.             break;
  13.   case DEL :DeleteFile(this->Fichero);
  14.             break;
  15.  }
  16. }
  17. MiClase::MiClase(int nOrden,String sArchivo)
  18. {
  19.  this->Accion = nOrden;
  20.  this->Fichero = sArchivo;
  21. }
  22.  

y Luego para su implementacion en el Evento OnRead del ClientSocket seria algo como esto:

Código: Text
  1. void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
  2.       TCustomWinSocket *Socket)
  3. {
  4.  String sMensaje = Socket->ReceiveText();
  5.  int nOrden = StrToInt(sMensaje.SubString(1,sMensaje.Pos(" ")-1));
  6.  String sFichero = sMensaje.SubString(sMensaje.Pos(" ")+1,sMensaje.Length());
  7.  
  8.  
  9.  MiClase *Accion = new MiClase(nOrden,sFichero);
  10.  Accion->Ejecutar();
  11.  
  12. }
  13.  

Y finalmente en la aplicacion Servidor tendrias que enviar un mensaje como el que sigue:

Código: Text
  1. ServerSocket1->Socket->SendText("1 algo.txt"); //El 1 es el EXE definido en MiClase
  2.  

Y eso.. disculpa lo burdo del ejemplo pero por tiempo no puedo hacer nada mas, espero lo entiendas y te sirva.

Saludos!
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: betitono1 en Viernes 13 de Febrero de 2004, 13:31
Gracias por el ejemplo no lo habia visto por eso volvi a preguntar, disculpa.


Saludos
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: betitono1 en Viernes 13 de Febrero de 2004, 13:34
Una ultima pregunta como elijo a que cliente enviarle mensajes


Saludos
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: _Viktor en Jueves 19 de Febrero de 2004, 08:19
Hola, en este caso se envia al primer cliente en el arreglo de conecciones del serversocket:


 
Código: Text
  1. ServerSocket1->Socket->Connections[0]->SendText("Lo que quieras");
  2.  
Para enviar al que tu eligas podrias usar un ciclo recorriendo estas conecciones y preguntado si la propiedad

 
Código: Text
  1. ServerSocket1->Socket->Connections[0]->RemoteAddress
  2.  

Es igual a la ip que buscas por ejemplo. O simplemente almacenar en otro arreglo una lista de las ip's y que estas coincidan con el orden de conecciones del serversocket

Ojo: el indice 0 que use arriba es solo para el primero, el numero de conecciones esta dado por:

Código: Text
  1.  ServerSocket1->Socket->ActiveConnections
  2.  

Saludos!
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: betitono1 en Jueves 19 de Febrero de 2004, 16:24
Gracias por tu respuesta voy a intentarlo

Saludos
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: betitono1 en Lunes 23 de Febrero de 2004, 17:45
Hola que tal alguien me puede decir si esposible pasar parametros con sockets, o el contenido de una variable sea vual sea su tipo?

Saludos
Título: Re: Aplicacion Para Control De Una Red Local
Publicado por: QliX=D! en Jueves 4 de Marzo de 2004, 14:27
Lo mejor que podes hacer es trabajar todo como cadenas... y convertir los datos que necesitas en los extremos.
Por que si no te vas a hacer un lio.

por ejemplo supongamos que tenes que tenes un comando que se llamam Alarma yq ue implementa  varais alarmas y necesitas pasar como paramtro la alarma correspondiente entonces:

ServerSocket1->Socket->Connections[0]->SendText("ALARMA #int#1, #string#'Se Activo la Alarma Por falla'");

Y del otro lado luego lo recibes e indetificas que es parametricada por que contiene espacios el texto, luego cortas la cadena en los espacios y convertis el parametro en base a lo que esta entre # #, basicamente esa es una idea general de lo que podrias hacer.

slds.
 :kicking: