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
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


0