Leonardo, estas validando la longitud despues de haber mandado
si no queres enviar un buffer grande validalo antes de hacer el send
si estas mandando 'texto' que lees desde buffer_c deberias comparar con el strlen de bffer_c (no con el resultado de send)

vuelvo a repetir, deberias usar un ciclo para usar el send, porque no se garantiza que se envie todo de una (lo mas probable es que te envie los primeros N bytes), lo mismo para un recv
busca la implementacion del ciclo en uno de los threads viejos que lanzaste

otro error es este:
     if (messaje <= 0) {
printf("error en write()");
close(sockfd);

exit(-1);
}
el send puede devolver 0 tranquilamente y no tener error (puede que no haya podido mandar nada... por eso el ciclo es necesario)


PD: de nuevo con write?
PD2: 'messaje' va con g :P

--------------------------------------------------
From: "Leonardo Rios" <[EMAIL PROTECTED]>
Sent: Monday, May 12, 2008 2:00 PM
To: <[email protected]>
Subject: [Prog] RE:limitando el envio de buffer al server en socket

 Estoy pasando mensajes entre el cliente al servidor con las funciones
 send() y recv().
 si tengo en buffer_c una capacidad de 256, como podria hacer algo como
 por el estilo

 Es decir, por defecto esta en 256, pero no quiero enviar mas de 50,-
 if (buffer_c > 50) {

printf("No se puede enviar mas de 50 al servidor");
                       return 1;
 }


 esto es lo que estoy implementando

 char buffer_c[256];

 while(1)
       {

       printf("Mensaje para enviar al servidor -> ");
       fgets(buffer_c, sizeof(buffer_c), stdin);

               n = send(sockfd, buffer_c, strlen(buffer_c), 0);

                               if (n <= 0) {
                                       printf("error en write()");
                                       close(sockfd);
                               exit(-1);
                               }

       printf("Message Ok\n");


  }

Me autorespondo, hice algo para limitar el envio de buffer (como
datastring), pero igualemente habria que mejorarlo y por sobre todo
que lo mande si la cantidad sobrepasa los 256,-

#define MAX_BUFFER 256
#define MIN_BUFFER 50
int messaje;
messaje = write(sockfd, buffer_c, strlen(buffer_c));

     if (messaje <= 0) {
printf("error en write()");
close(sockfd);

exit(-1);
}



if ((messaje < MAX_BUFFER) && (messaje > MIN_BUFFER)) {
printf("Trata de no enviar mensajes largos\n");

}


if (messaje > MAX_BUFFER) {
printf("Imposible mandar mensajes extensos .....\n");
close(sockfd);
exit(-1);
}



else
printf("Mensaje Ok- Longitud del mensaje %d\n", messaje);
}



--
/* Leonardo Rios
* rios[dot]lj[at]gmail[dot]com
*/


--
/* Leonardo Rios
* rios[dot]lj[at]gmail[dot]com
*/
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion




No virus found in this incoming message.
Checked by AVG.
Version: 8.0.100 / Virus Database: 269.23.16/1428 - Release Date: 12/05/2008 07:44 a.m.

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis! ¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a