Programación General > C++ Builder
Aplicacion Para Control De Una Red Local
seth_los:
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
_Viktor:
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 --- //---------------------------------------------------------------------------#include <vcl.h>#ifndef MiClaseH#define MiClaseH//OPERACIONES#define EXEC 1#define DEL 2//---------------------------------------------------------------------------#endif class MiClase{ private: int Accion; String Fichero; public: void Ejecutar(void); MiClase(int nOrden, String sArchivo);};
MiClase.cpp
--- Código: Text ---//---------------------------------------------------------------------------#pragma hdrstop#include "MiClase.h"//---------------------------------------------------------------------------#pragma package(smart_init) void MiClase::Ejecutar(){ switch(this->Accion) { case EXEC:ShellExecute(0,"open",this->Fichero.c_str(),0,0,SW_SHOWDEFAULT); break; case DEL :DeleteFile(this->Fichero); break; }}MiClase::MiClase(int nOrden,String sArchivo){ this->Accion = nOrden; this->Fichero = sArchivo;}
y Luego para su implementacion en el Evento OnRead del ClientSocket seria algo como esto:
--- Código: Text ---void __fastcall TForm1::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket){ String sMensaje = Socket->ReceiveText(); int nOrden = StrToInt(sMensaje.SubString(1,sMensaje.Pos(" ")-1)); String sFichero = sMensaje.SubString(sMensaje.Pos(" ")+1,sMensaje.Length()); MiClase *Accion = new MiClase(nOrden,sFichero); Accion->Ejecutar(); }
Y finalmente en la aplicacion Servidor tendrias que enviar un mensaje como el que sigue:
--- Código: Text ---ServerSocket1->Socket->SendText("1 algo.txt"); //El 1 es el EXE definido en MiClase
Y eso.. disculpa lo burdo del ejemplo pero por tiempo no puedo hacer nada mas, espero lo entiendas y te sirva.
Saludos!
betitono1:
Gracias por el ejemplo no lo habia visto por eso volvi a preguntar, disculpa.
Saludos
betitono1:
Una ultima pregunta como elijo a que cliente enviarle mensajes
Saludos
_Viktor:
Hola, en este caso se envia al primer cliente en el arreglo de conecciones del serversocket:
--- Código: Text ---ServerSocket1->Socket->Connections[0]->SendText("Lo que quieras"); Para enviar al que tu eligas podrias usar un ciclo recorriendo estas conecciones y preguntado si la propiedad
--- Código: Text ---ServerSocket1->Socket->Connections[0]->RemoteAddress
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 --- ServerSocket1->Socket->ActiveConnections
Saludos!
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa