#pragma once #include "Csock_cl.h" #include "th.h" #include class Cproceso_cliente; class UTILES_EXPORT Cescucha_sock_sv//interface para que te entren los accept { public: virtual Cproceso_cliente* crea_cliente(BOOL *pirate)=0;//funcion que crea los procesos cliente en el accept (devuelve null si no se acepta) }; //socket generico si se pone una escucha crea los socket cliente desde la escucha //si no desde la funcion crea_cliente //si el proceso cliente ya tiene un socket creado no se crea si no se crea un socket cliente class UTILES_EXPORT Csock_sv : public Csock_cl { public: BOOL sock_cerrado; Cescucha_sock_sv *escucha; Csock_sv(BOOL* sal=NULL, C_error*e=NULL); virtual ~Csock_sv(void); Cproceso_cliente* (*crea_cliente)(BOOL *pirate ); //funciones servidor------------------------------------ virtual void OnAccept(int nErrorCode); virtual void OnClose(int nErrorCode); //virtual void run(); //funciones virtuales de thread win }; //socket servidor con thread y cola de evntos propia class UTILES_EXPORT Csock_svThread :public CWinThread { //DECLARE_DYNCREATE(Csock_svThread) BOOL isLisening; BOOL pireateTread; int port, type, evenFlag; char * url; public: Cescucha_sock_sv *escucha; Cproceso_cliente* (*crea_cliente)(BOOL *pirate ); BOOL liseningThread(int port, char * url, int type = SOCK_STREAM, int evenFlag = FD_ACCEPT | FD_READ | FD_CLOSE );//inicia escucha void close();//cierra escucha //funciones aux------------------------ ~Csock_svThread(); Csock_svThread(); //AfxSocketInit() virtual BOOL InitInstance() ; virtual int Run() ; CString sName ;//nombre thread };