hago un re-quote
fijate que *dentro* de las llaves del primer if (valida si es help) esta
el
segundo if (valida si es quit)
por ende nunca te va a reconocer el fin de transmision que planteas
cuando me refiero a "adentro" es el uso de scope de una funcion estructurada
cuando a un if un le pones {...} es para que se ejecute lo de adentro _solo_
si se cumple la condicion
o que haces es similar a lo siguiente
if (i == 0) {
if (i > 0) { /*nunca va a ser verdadero esto porque i es cero*/
.....
}
}
lo desarrollo mas claro abajo, comentando cual es el error e indentando para
mayor claridad
while(1)
{
....
if (((strcmp ("/help", buffer_c) == 0)) || ((strcmp ("/h", buffer_c) ==
0)))
{
{/*llave innecesaria*/
printf("Help ... /quit --> cliente cierra el socket\n");
}/*llave innecesaria*/
if (strcmp("/quit", buffer_c) == 0)
{ /*nunca entra a este if porque buffer_c es /help o /h => esta dentro
del if anterior*/
printf("Se ha salido del chat\n");
close(sockfd);
}
}
...
}
solucion:
sacar el if de quit afuera y juntar con un else
while(1)
{
....
if (((strcmp ("/help", buffer_c) == 0)) || ((strcmp ("/h", buffer_c) ==
0)))
{ /*esta llave se puede eliminar junto con la siguiente porque adentro hay
una sola instruccion*/
/*las llaves innecesarias se eliminaron*/
printf("Help ... /quit --> cliente cierra el socket\n");
}
else if (strcmp("/quit", buffer_c) == 0)
{ /*este if salio afuera del if anterior y se conecto con un else*/
printf("Se ha salido del chat\n");
close(sockfd);
}
...
}
--------------------------------------------------
From: "Leonardo Rios" <[EMAIL PROTECTED]>
Sent: Tuesday, May 06, 2008 7:05 PM
To: <[email protected]>
Subject: [Prog] RE.enviar y recibir mensajes en socket conectados
tu problema es como estructuraste el if con las llaves {}
if (((strcmp ("/help", buffer_c) == 0)) || ((strcmp ("/h", buffer_c) ==
0))) {
{
printf("Comando para ayuda");
}
if (strcmp("/quit", buffer_c) == 0) {
printf("Se ha salido del chat");
close(sockfd);
}
}}
fijate que *dentro* de las llaves del primer if (valida si es help) esta
el
segundo if (valida si es quit)
por ende nunca te va a reconocer el fin de transmision que planteas
Lo hice de esta forma, pero igualmente no me reconoce el /quit o el /help
while(1)
{
printf("Mensaje para enviar al servidor -> ");
fgets(buffer_c, sizeof(buffer_c), stdin);
if (((strcmp ("/help", buffer_c) == 0)) || ((strcmp ("/h", buffer_c) ==
0)))
{
{
printf("Help ... /quit --> cliente cierra el socket\n");
}
if (strcmp("/quit", buffer_c) == 0)
{
printf("Se ha salido del chat\n");
close(sockfd);
}
}
n = send(sockfd, buffer_c, strlen(buffer_c), 0);
if (n <= 0) {
printf("error en write()");
close(sockfd);
exit(-1);
}
printf("Message Ok\n");
}
Manda los mensajes correctamente, pero no me toma el "/quit" ni el "/help"
o "h"
--
/* 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.9/1417 - Release Date:
06/05/2008 08:07 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