#pragma once #include #include "base_head.h" #define MAX_CHAR_BLOQ_STRSOCKET 1024 //Maximo de caracteres por envio #include "_error.h" #define ESPERA_STRSOCKET 1 //milis en sleep #define ESPERA_SEG_STRSOCKET 3//SEGUNDOS MAXIMOS INTENTANDO RECIBIR ENVITOS #define VECES_ESPERA_STRSOCKET ((1000 * ESPERA_SEG_STRSOCKET) / ESPERA_STRSOCKET) #define MIN_REALLOC_STR_SOC 512 //bytes /* Socket cliente para envio de informacion ascii (string) */ class UTILES_EXPORT Cstr_socket : public CAsyncSocket { public: //variables-------------------------------------- C_error er;//variable que da info de posibles errores BOOL pirate;//==TRUE -> se cancela todas las tareas del socket long cli_currando;//indica que el socket esta en uso Cstr_socket *pp; //puntero al padre //variables aux---------------------------------- private: char *buf;//buffer de envios int n, m;//ocupacion y capacidad del buffer int nb;//indica el numero de bytes que va por envio total public: //c y d------------------------------------------ Cstr_socket(void); ~Cstr_socket(void); public: //funciones-------------------------------------- BOOL crear(char *ip=NULL, int puerto=0);//crea el socket en la ip y puerto de salida indicados BOOL conecta(char *ip, int puerto);//contecta a servidor char* recibir();//recibe string; BOOL envia( char *fmt, ...);//envia string void cierra();//cierra socket char *getbuf();//devuelve buffer del socket //funciones auxiliares--------------------------- private: BOOL cuida_mem(int nbb);//pide memoria si hace falta int recibir(BYTE *b, int nbb);//recive nbb bytes y los deja en b BOOL enviar(int nbb,BYTE *b); }; /* Socket servidor para envio de informacion ascii (string) */ class UTILES_EXPORT Cstr_socket_srv : public Cstr_socket { //variables aux---------------------------------- private: HWND wnd;//ventana a la que mandar eventos int id_even, id_comman; BOOL *sal_soc; int t_out;//tiempo de salida sin hacer nada __int64 t; public: //c y d------------------------------------------ Cstr_socket_srv(void); ~Cstr_socket_srv(void); //funciones-------------------------------------- virtual BOOL on_datos_recibidos(char *txt)=0;//funcion donde procesar los datos virtual Cstr_socket_srv* crea_cliente()=0;//funcion donde procesar los datos BOOL pon_escucha(char *ip, int puerto); void pon_wnd_destruc(HWND wnd,int id_comman,int id_even); //funciones auxiliares--------------------------- private: public: void run(); virtual void OnAccept(int nErrorCode); virtual void OnClose(int nErrorCode); static UINT th_funcion(LPVOID pp); void pon_tout( int t_out ); }; //funciones de socket cliente para pinvoke----------------------------------------------------- extern "C" UTILES_EXPORT Cstr_socket *str_socket_crea(); extern "C" UTILES_EXPORT BOOL str_socket_conecta(Cstr_socket *soc, char *ip, int puerto); extern "C" UTILES_EXPORT BOOL str_socket_envia(Cstr_socket *soc, char *txt); extern "C" UTILES_EXPORT int str_socket_recive(Cstr_socket* soc); extern "C" UTILES_EXPORT void str_socket_dame_buf(Cstr_socket* soc, char* buf); extern "C" UTILES_EXPORT void str_socket_dame_error(Cstr_socket* soc, char* error); extern "C" UTILES_EXPORT void str_socket_borra(Cstr_socket* soc);