• Lunes 6 de Mayo de 2024, 12:53

Autor Tema:  La Función Recv ¿?  (Leído 2239 veces)

jesusfd

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
La Función Recv ¿?
« en: Viernes 10 de Diciembre de 2004, 18:44 »
0
Tengo un pequeño problema al recibir de un socket con la llamada recv:

lo que recibo es el buffer de la longitud que yo le pase, ej:

nbytes=recv(fd,buffer, longitud,0);

bien... pues, ¿como hago para convertir todos esos caracteres del buffer en una cadena y luego poder comparar con strcmp,...??

nota: hice un pekeño bucle while(leido<long) para leerlos,  luego hice:
 char *orden;
orden=buffer[nbytes];

if(strcmp(orden,"patron")==0)
 printf("escribio patron");

pero resulta que si pongo: patronxyz dsfds
 me dice que escribí patrón!!
como lo soluciono? ¿?

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: La Función Recv ¿?
« Respuesta #1 en: Viernes 10 de Diciembre de 2004, 20:14 »
0
Si aun luchas con el problem puedo ayudarte, si es posible postea el code, lo miro y te ayudo a corregirlo. Saludos!
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

jesusfd

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: La Función Recv ¿?
« Respuesta #2 en: Sábado 11 de Diciembre de 2004, 13:01 »
0
bien,...concretando mas en mi problema: Necesito leer una orden de un cliente, para ello uso:
 recv(fd,buffer,sizeof(buffer),0);

pues bien, como yo recibo un bufer de caracteres me gustaría saber como hago para tratar la orden y sus argumentos:
ej...
 cliente: user jesus
Todo ello se enviará por buffer (incluso mas espacios en blanco hasta completar el tamaño de este), pero yo lo kiero saber alguna forma de poder guardar los argumentos recibidos (user y jesus) para luego tratarlos mediante strcmp,....

Gracias!! :rolleyes:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: La Función Recv ¿?
« Respuesta #3 en: Sábado 11 de Diciembre de 2004, 16:06 »
0
tienes que hacer una funcio nque te entienda el buffer como una cadena y luego buscar 'espacios' los cuales indican quie a continuacion es un argumento nuevo.

asio ue basicamente solo es hacer un programa que te separe el contenido de una cadena segun el numero de espacios que esta tenga.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

mgitano2001

  • Nuevo Miembro
  • *
  • Mensajes: 24
    • Ver Perfil
Re: La Función Recv ¿?
« Respuesta #4 en: Miércoles 15 de Diciembre de 2004, 05:06 »
0
Si estas seguro que te llegan espacios, prodrias usar strtok(), lo que hace esta funcion es dividir una cadena en componentes lexicos o tokens mediante un separador ( que en este caso seria " " ). Cuando terminen los datos que te interesan, termina la cadena con '\0' asi sabes hasta donde son datos utiles.

veamos un ejemplo completo:

recv(fd, buffer, 512, 0);/* No sizeof(buffer), especifica un tamaño (consejo) */
cadena = strtok(buffer, " ");
while (cadena != NULL ) {
       /* Guardar esa cadena en un lugar o prosesarla */
       cadena = strtok(NULL, " ");
}

Espero que te sea de ayuda, cualquier cosa, escribi nuevamente.
Saludos Mgitano2001
</span></span>