87 lines
3.2 KiB
C++
87 lines
3.2 KiB
C++
#pragma once
|
|
#include <afxsock.h>
|
|
#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, char* ip_local=NULL);
|
|
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);
|