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

usando indentacion en el codigo, estos tipos de equivocaciones los identificas rapido

ademas, deberías utilizar las funciones send y recv (como ya te respondieron en el ultimo hilo que abriste)

otro error que con tu ejemplo puede funcionar es que estas suponiendo que todo el buffer se envia utilizando un write/send la funcion send puede que no envie todo el buffer de una, por ese motivo el valor de retorno es la cantidad de bytes que pudo mandar lo que deberias hacer es hacer un ciclo hasta que la cantidad de bytes enviados cumpla con el total otro detalle es que deberías utilizar aritmetica de punteros para correr el puntero del buffer, porque si al send siempre le mandas el mismo buffer te va a enviar siempre los primeros bytes

podrias hacer los siguiente:

 int counter = 0;
 int bytes = 0;
 while (counter < len) {
   if ((bytes = send( sockfd, buf + counter, len - counter, 0 )) < 0) {
     //ERROR
   }
   else
     counter += bytes;
 }

fijate que en el parametro como buf es un char* se le hace
buf + counter
con esto siempre manda el buffer que todavia no mando

saludos

--------------------------------------------------
From: "Leonardo Rios" <[EMAIL PROTECTED]>
Sent: Friday, May 02, 2008 12:38 PM
To: <[email protected]>
Subject: [Prog] enviar y recibir mensajes en socket conectados

Hola, estoy haciendo una aplicacion que envia mensajes al servidor por
socket. Los mensajes los envia bien y el servidor los recibe
correctamente. El problema esta en que el cliente no interpreta lo que
esta en el buffer_c "/h" "/help" "/quit". Hice con las sentencias
while(1) y un If si encuentra estas cadenas ..


#cliente
while(1)
{


printf("Mensaje para enviar al servidor-> ");
fgets(buffer_c, sizeof(buffer_c), stdin);
if (write(sockfd, buffer_c, strlen(buffer_c)) < 0) {
printf("eror en write()");
close(sockfd);
exit(-1);
}
printf("Mensaje enviado al servidor\n");

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);
 }
}}

#server

while (1) {

read(newsocket, buffer_s, sizeof(buffer_s));
printf("mensaje recibido del cliente: %s", buffer_s);
   }

--
/* 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.7/1411 - Release Date: 02/05/2008 08:02 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