>>279
send や recv は、戻り値を見てこんな感じで送る必要がありますが、
やっていますか?

int len = data_size;
char* p = data_ptr;
while (len > 0)
 int sent = send(socket, p, len);
 if (sent <= 0) エラー処理
 len -= sent;
 data_ptr += sent;
}