error de la funcion recv() en C

pues que un perror("recv"); me da

recv: Invalid or incomplete multibyte or wide character

eso cuando el servidor manda cualkier cosa...pero el recv lo capta..pero como si nada el strlen es 0 los bytes recibidos 0 y el contenido de la cadena recibida...no tiene contenido..
a ver si alguine puede tener alguna idea, si para ello necesitan ver los sources que lo diga que doy la url para bajarlos
Este... en el codigo que me has pasado haces esto:

nbytes=recv(socketfd, buf , strlen(buf) , 0 )

Donde "strlen(buf)" es el tamaño que deberia recoger "buf" que es el bufer de entrada. Siendo buf de longitud 0 al no estar inicializado.

Puede que sea eso, que recoja 0 caracteres porque no has inicializado "buf".

Yo creo que con un simple bucle bastaria:
int i;
for(i=0; i<999; i++)
{
buf[i]=' ';
}
buf[999]='\0';

Inserta esto al principio de todo... en principio de esta manera strlen(buf) tendria que devolver 1000... o 1000 por lo que ocupe un caracter (2bytes?).

A ver si rula, saludos!
mm no creo buf esta declarado arriba con char buf[1000]; y con eso va que chuta luego que tambien ke nbytes sale 0!!!....nose es muy raro yo ese error nunca lo e visto xD
Este... strlen devuelve un entero que es el resultado de mirar el numero de caracteres que tiene una cadena.

aunque lo hayas declarado, no esta inicializado (esta vacio o lleno de mierda) luego, el tamaño es 0.

Por eso no rellena el buffer de entrada.

Bueno, ya diras...
strlen te da el número de caracteres hasta el '\0'
para un buffer sin '\0' puedes usar

sizeof(TIPO)*Nelementos

Claro que si es un char basta con

Nelementos
strlen te da el número de caracteres hasta el '\0'
aaaaaaaaro, pur esu le he exo un peacho bucle que acaba la cadena con un '\0' ;)

Pero el señorito no reacciona...
bueno el tema se soluciono con el bucle pero lo graciosos esqure el error devuelto por el perror("recv"); lo seguia dando xD
asi ke supongo ke seria un perror mal puesto XD

pues nada gracias
6 respuestas