Hola, necesito enviar paquetes de datos por bloques a través de un socket. Yo tengo un puntero de tipo uchar con el mensaje completo, y una variable de tipo int con la longitud del mismo.
La conexión del socket ya la tengo hecha perfectamente, solo necesito una ayuda de como lograr ir enviando el mensaje por bloques de 1024 ya que estuve probando con varios ejemplos y con ninguno pude conseguirlo.
Algo así es lo que intento resolver:
BOOL enviarMensaje( UCHAR *sSndData, UINT16 ulSndDataLen)
{
#define SEND_MAX_SIZE 1024
int handle=-1;
short retVal =-1 ;
int totalEnviados=0;
handle=CrearSocket(sTCPAddress,ulTCPPort);
timeout.tv_sec = 2; //segundos
timeout.tv_usec = 100; //microsegundos
setsockopt(handle,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));
timeout.tv_sec = 2;
timeout.tv_usec = 100;
setsockopt(handle, SOL_SOCKET,SO_PKTRCVTIMEO,(char*)&timeout,sizeof(timeout));
if(handle >=0)
{
while(totalEnviados<ulSndDataLen){
retVal = send(handle,sSndData,SEND_MAX_SIZE,0);
totalEnviados+= retVal;
}
closesocket(handle);
}
}
Agradezco cualquier ayuda al respecto
Saludos
Jorge
La conexión del socket ya la tengo hecha perfectamente, solo necesito una ayuda de como lograr ir enviando el mensaje por bloques de 1024 ya que estuve probando con varios ejemplos y con ninguno pude conseguirlo.
Algo así es lo que intento resolver:
BOOL enviarMensaje( UCHAR *sSndData, UINT16 ulSndDataLen)
{
#define SEND_MAX_SIZE 1024
int handle=-1;
short retVal =-1 ;
int totalEnviados=0;
handle=CrearSocket(sTCPAddress,ulTCPPort);
timeout.tv_sec = 2; //segundos
timeout.tv_usec = 100; //microsegundos
setsockopt(handle,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));
timeout.tv_sec = 2;
timeout.tv_usec = 100;
setsockopt(handle, SOL_SOCKET,SO_PKTRCVTIMEO,(char*)&timeout,sizeof(timeout));
if(handle >=0)
{
while(totalEnviados<ulSndDataLen){
retVal = send(handle,sSndData,SEND_MAX_SIZE,0);
totalEnviados+= retVal;
}
closesocket(handle);
}
}
Agradezco cualquier ayuda al respecto
Saludos
Jorge