50 lines
1.6 KiB
C++
50 lines
1.6 KiB
C++
#pragma once
|
|
#include "Csock_cl.h"
|
|
#include "th.h"
|
|
#include <afxwin.h>
|
|
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
|
|
}; |