C/Visual C - Sockets

 
Vista:

Sockets

Publicado por BenjiRock (1 intervención) el 24/01/2002 21:25:25
Hola Foro
Tengo un problemilla con c. Estoy haciendo un programa que va en c bajo linux. Este en si es muy simple en si, es un cliente de pop3 que simplemente me indica el nº de mensajes que hay para un usuario determinado(esto es lo que en un principio quiero que haga). Pues bien me he creado una funcion para leer del socket, y es aqui donde tengo el problema pues no le encuentro fallo a su logica y estoy seguro que el fallo es una tonteria pero stoy bloqueado pues llevo mas de un tema a la vez, bueno el codigo es el siguiente:
int leer(int df, char *bf, int n)
{ char c;
int i=0;
while (i<n)
{
read(df,&c,1);
if (c!=0||c!=13||c!=10)
{
*(bf + i++) = c;
printf("%c",c);
}else
{
*(bf + i) = 0;
return(i);
}

}
return(i);
}

bueno este es el framento de codigo yo leo caracter a caracter hasta 'n' o hasta que encuentre un nulo, salto de linea o retun (bueno mas o menos). Pues me pasa lo siguiente cuando del socket recibe un caracter 0, 13 o 10 se salta la condicion y no rompe nunca, tengo entendido que cuando encuentra un nulo rompe la conexion con el servidor, pero a mi ni rompe por ahi, ni por el return del else, ni por el return que hay despues del while, empieza a leer y no rompe, bueno llega a un punto en el que sale un error, que ahora mismo no recuerdo.

Bueno pido perdon por enrollarme demasiado y espero que puedan solventar mi problema gracias.

Saludos

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sockets

Publicado por Javi (3 intervenciones) el 26/01/2002 23:09:56
prueba

if ( (c!=0) || (c!=13) || (c!=10) )


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sockets

Publicado por nafter (5 intervenciones) el 21/02/2002 06:32:04
despues del else en vez de :
else
{
*(bf + i) = 0;
return(i);
}

usa:

else
{
close(df)
}

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sockets

Publicado por Tok (13 intervenciones) el 17/07/2002 19:16:10
Me parece que la condicion esta mal, creo que debería ser:

((c!=0) && (c!=10) && (c!=13))

Si lo pones con OR, te trataría los caracteres 0, 10 y 13, porque si tienes un caracter 0, sería distinto del 10 y distinto del 13, asi que entra en el if
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar