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