Tienes que ir enviando el archivo por partes, me parece que el protocolo TCP/IP permite mandar unos 8000 bytes (mas o menos) en cada paquete, informate sobre cual es el máximo del paquete.
saludos.
El máximo se lo informa el propio S.O.
int uiSize = sizeof(int);
// Obtenemos los buffers del Sistema Operativo, tanto de Envio como de Recepción de datos.
if (::getsockopt(this->mySock, SOL_SOCKET, SO_RCVBUF, (char*)&this->uiBuffRcv, &uiSize) == SOCKET_ERROR ||
::getsockopt(this->mySock, SOL_SOCKET, SO_SNDBUF, (char*)&this->uiBuffSnd, &uiSize) == SOCKET_ERROR)
{
closesocket(this->mySock);
...
}
...
Dulces Lunas!¡.