Buenas. Querria saber si es correcto utilizar con sockets, el envio del size y 
luego el paquete a mandar. Les muestro el codigo:

----------

int Socket::send(const std::string& buffer){
    int size = buffer.length();
    char* array = new char[(unsigned int)size+1];
                
    memcpy(array,buffer.c_str(),size+1);        
    if(buffer=="FIN")
        size = -1;
        
    if(buffer.size() > 0){
        if(status == NO_ERROR && buffer.length() != 0){
            ::send(sd,(char*)&size,sizeof(int),0);
            if(size != -1)
                ::send(sd,array,size,0);
        }       
    }

    delete[] array;

    return size;
}

int Socket::recv(std::string& buffer,size_t len){       
    int size, total, partial, toReturn;
    char* ptr;
    std::string Acum_str;

    if(status == NO_ERROR){
        ::recv(sd,(void*)&size,sizeof(int),0);
        total = 0;

        if(size != -1){
                
            ptr = new char[size+1];     
        
            while(total < size){
                partial = ::recv(sd,(void*)ptr,(size-total),0);
                ptr[partial] = '\0';
                Acum_str += ptr;
                total += partial;
            }
            delete[] ptr;
            toReturn = size;
            buffer = Acum_str;
        }
        else
            toReturn = size;
                
    }
        
    return size;
}

--------------

Se ve que primero hay una transferencia del size a mandar. Luego, se envia el 
paquete. En la implementacion anterior tengo hecho el while en el recv que 
verifica que llegue todo.... seria necesario hacer el mismo procedimiento para 
el send????

Esta bien hacer esto anterior, de mandar 1ro el size??

Muchas gracias!
Pablo Statile


_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a