Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: inGnio en 28 Julio 2012, 15:33 pm



Título: PREGUNTA: COMO PUEDO ENVIAR ARCHIVOS GRANDES POR SOCKETS EN C++???
Publicado por: inGnio en 28 Julio 2012, 15:33 pm
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.


Título: Re: PREGUNTA: COMO PUEDO ENVIAR ARCHIVOS GRANDES POR SOCKETS EN C++???
Publicado por: avesudra en 28 Julio 2012, 16:36 pm
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!


Título: Re: PREGUNTA: COMO PUEDO ENVIAR ARCHIVOS GRANDES POR SOCKETS EN C++???
Publicado por: fary 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.


Título: Re: PREGUNTA: COMO PUEDO ENVIAR ARCHIVOS GRANDES POR SOCKETS EN C++???
Publicado por: BlackZeroX en 30 Julio 2012, 09:47 am
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
  1.  
  2.    int uiSize = sizeof(int);
  3.  
  4.    //  Obtenemos los buffers del Sistema Operativo, tanto de Envio como de Recepción de datos.
  5.    if (::getsockopt(this->mySock, SOL_SOCKET, SO_RCVBUF, (char*)&this->uiBuffRcv, &uiSize) == SOCKET_ERROR ||
  6.            ::getsockopt(this->mySock, SOL_SOCKET, SO_SNDBUF, (char*)&this->uiBuffSnd, &uiSize) == SOCKET_ERROR)
  7.    {
  8.        closesocket(this->mySock);
  9. ...
  10.  
  11.    }
  12. ...
  13.  
  14.  

Dulces Lunas!¡.


Título: Re: PREGUNTA: COMO PUEDO ENVIAR ARCHIVOS GRANDES POR SOCKETS EN C++???
Publicado por: inGnio en 1 Agosto 2012, 20:34 pm
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


Título: Re: PREGUNTA: COMO PUEDO ENVIAR ARCHIVOS GRANDES POR SOCKETS EN C++???
Publicado por: 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


Título: Re: PREGUNTA: COMO PUEDO ENVIAR ARCHIVOS GRANDES POR SOCKETS EN C++???
Publicado por: dato000 en 2 Agosto 2012, 02:17 am
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


Título: Re: PREGUNTA: COMO PUEDO ENVIAR ARCHIVOS GRANDES POR SOCKETS EN C++???
Publicado por: fary en 3 Agosto 2012, 13:43 pm
El máximo se lo informa el propio S.O.

Código
  1.  
  2.    int uiSize = sizeof(int);
  3.  
  4.    //  Obtenemos los buffers del Sistema Operativo, tanto de Envio como de Recepción de datos.
  5.    if (::getsockopt(this->mySock, SOL_SOCKET, SO_RCVBUF, (char*)&this->uiBuffRcv, &uiSize) == SOCKET_ERROR ||
  6.            ::getsockopt(this->mySock, SOL_SOCKET, SO_SNDBUF, (char*)&this->uiBuffSnd, &uiSize) == SOCKET_ERROR)
  7.    {
  8.        closesocket(this->mySock);
  9. ...
  10.  
  11.    }
  12. ...
  13.  
  14.  

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.