PREGUNTA: COMO PUEDO ENVIAR ARCHIVOS GRANDES POR SOCKETS EN C++???

Iniciado por inGnio, 28 Julio 2012, 15:33 PM

0 Miembros y 3 Visitantes están viendo este tema.

inGnio

Como todos sabran el manejo de cadenas o strings es facil en sockets asi crear un chat ejemplo clasico. El punto en cuestion es mandar ficheros por sockets especificamente en dev-c++. como se maneja los stream en c++?... agradezco de antemano sus respuestas.

avesudra

Hola , por favor no escribas en mayúsculas , entiendo que quieras que más gente lea tu post pero esa no es la forma, en cuanto a la pregunta pues podrias cargar byte a byte el archivo e irlo mandando , y dev-c++ es un IDE no un compilador, y en cuanto a lo de los streams en C++ aquí tienes toda la referencia: http://www.cplusplus.com/reference/iostream/

¡Un saludo y bienvenido al foro!
Regístrate en

fary

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.
Un byte a la izquierda.

BlackZeroX

Cita de: mDrinky en 28 Julio 2012, 16:45 PM
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.

Código (cpp) [Seleccionar]


   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!¡.
The Dark Shadow is my passion.

inGnio

Gracias a todos por su ayuda lo resolvi... como dijeron seccione en partes el archivo y lo envie... todo funciona correctamente... y no volvere a escribir con mayuscula avesudra... ;D

inGnio

tambien encontre un algoritmo para el control de errores en el envio del fichero...
tratare de implementarlo completamente y publicarlo en el foro...bye
http://www.arcesio.net/checksum/checksuminternet.html ;D

dato000

Cita de: inGnio en  1 Agosto 2012, 20:40 PM
tambien encontre un algoritmo para el control de errores en el envio del fichero...
tratare de implementarlo completamente y publicarlo en el foro...bye
http://www.arcesio.net/checksum/checksuminternet.html ;D

de oro este dato!!!!! gracias



fary

Cita de: BlackZeroX (Astaroth) en 30 Julio 2012, 09:47 AM
El máximo se lo informa el propio S.O.

Código (cpp) [Seleccionar]


   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!¡.

Cambia en cada SO el tamaño del paquete?  :-\

Yo no me la jugaría con eso y miraria el standart TCP/IP como bien dije antes, para asegurarme de que sea compatible siempre.

saludos.
Un byte a la izquierda.