• Domingo 15 de Diciembre de 2024, 07:04

Autor Tema:  Sockets Cliente - Servidor  (Leído 1386 veces)

gorathletic

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Sockets Cliente - Servidor
« en: Martes 15 de Abril de 2008, 07:44 »
0
Hola!
Estoy realizando un programilla de sockets entre un cliente i un servidor. De momento los dos forms se conectan entre ellos, pero no se como hacerlo para pasar una imagen entre ellos porque o me pasa 0 bytes o me pasa 256 bytes solamante.
Alguien puede echarme un cable? Muchas gracias

Nos vemos    :)

yomismo24

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Sockets Cliente - Servidor
« Respuesta #1 en: Jueves 17 de Abril de 2008, 10:56 »
0
Hola
dices que te pasa solo 256 bytes y me imagino que tu imagen ocupa más.
Se me ocurre que a lo mejor el tamaños de los buffers que defines para hacer en envío por sockets no sea lo suficientemente grande. Además creo recordar que en la funcion Send de los sockets había un parámetro en el que se indicaba el número máximo de bytes a enviar.
Lo mismo te puede pasar al leer el archivo del disco. Asegúrate de que lo lees completo antes de enviarlo.
Espero que te sirva de ayuda. Si sigues teniendo problemas pon algo de tu codigo para que lo veamos mejor.

Saludos!!

gorathletic

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Sockets Cliente - Servidor
« Respuesta #2 en: Lunes 21 de Abril de 2008, 22:03 »
0
Pues mira, aún no me ha salido nada de nada. No entiendo lo que hago mal. Aqui os pongo un poco de codigo a ver que os parece. Gracias.

{
   int longitud;
   nomfitxer=Socket->ReceiveText();
   Memo->Lines->Add(nomfitxer);
   longitud=Socket->ReceiveLength();

   if (longitud>0)
      {
       longitud=dades.Length();
       ServerSocket1->Socket->Connections[0]->ReceiveBuf(&ACK,4);
      }
   else
     {
       int ACK;
       int posactual;
       ServerSocket1->Socket->Connections[0]->ReceiveBuf(&ACK,4);
       trama.tlong=sizeof(trama.dades);
       trama.tinici=trama.tinici+trama.tlong;
       posactual=ftell(arxiu);
       if (posactual<midaarxiu(arxiu))
         {
           fseek(arxiu,trama.tlong,trama.tinici);
           fread(trama.dades,sizeof(trama.dades),1,arxiu);
           ServerSocket1->Socket->Connections[0]->SendBuf(&trama,sizeof(trama));
         }
      else
        {
           ServerSocket1->Socket->Connections[0]->SendText("F");
        }
}
}
}