#if !defined(AFX_SOCK_SIMPLE_H__8491F9CB_65AF_44E1_80A3_52176804CD08__INCLUDED_)
#define AFX_SOCK_SIMPLE_H__8491F9CB_65AF_44E1_80A3_52176804CD08__INCLUDED_

#include <base_head.h>
#include "utiles_def.h"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#endif
#define MODULO_CSOCK_CL	"Csock_cl"
#include <afxsock.h>

class C_error;
//socket cliente---------------------------------
class UTILES_EXPORT Csock_cl : public CAsyncSocket
{
public:
	//variables----------------------------------
	BOOL *pirate;
	BOOL borra_pirate;
	BYTE *buf;
	int mb,nb;
	Package_head_0 cab;
	C_error* er;
	int time_sleep;//tiempo espera
	int intentos;
	bool creado;
	//variables aux------------------------------
private:
	BOOL borra_er;
	//cons---------------------------------------
public:
	Csock_cl(BOOL*sal=NULL,C_error*e=NULL);
	virtual ~Csock_cl(void);

	//funciones----------------------------------
	BOOL Create( UINT puerto=0 , int tipo=SOCK_STREAM , 
		long evento=FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE ,
		LPCTSTR ip=NULL );

	BOOL conectar(char *ipdot,int puerto);//conecta con un puerto y ip

	BOOL recibe_package(int indice);//recibe package y lo pone en buffer apartir de indice;
	BOOL envia_package(BYTE* buff, int n, int encrip=0);//envia el buffer en packages si encrip=1 (hacemos encrip1)
	//funciones auxiliares-----------------------
	void cuida_buf(int n);//asegura en buf un espacio de n bytes;
	BOOL recibe(BYTE*b, int n);//recive n bytes y lo pone en b;
	BOOL envia(BYTE*buff, int n);//envia bytes sin mas;			
	
};
