Programación General => C/C++ => Mensaje iniciado por: emir21 en Viernes 11 de Junio de 2004, 18:01
Título: Servidor Finger
Publicado por: emir21 en Viernes 11 de Junio de 2004, 18:01
hola que tal nesecito con bastante urgencia que me ayuden o me digan los pasos que debo segui pra realizar un servidor finger en lenguaje C, y como utilizar el socket ... tengo plataforma win dows xp..... y tengo que correr el programa desde c://.... (http://c://....). me dan como entrada usuario@..........com osea un email y de hay yo tengo que sacar la info pero como lo hago... demen por lo menos que pasos deberia seguir. :comp:
Título: Re: Servidor Finger
Publicado por: JuanK en Jueves 17 de Junio de 2004, 03:16
ya averiguaste la especificacion del protocolo?
Título: Re: Servidor Finger
Publicado por: Eternal Idol en Jueves 17 de Junio de 2004, 10:00
Como bien dice JuanK es fundamental que sepas el protocolo FINGER, lo podes encontrar acá: http://www.faqs.org/rfcs/rfc742.html (http://www.faqs.org/rfcs/rfc742.html) y acá http://www.faqs.org/rfcs/rfc1288.html (http://www.faqs.org/rfcs/rfc1288.html)
Sabiendo el protocolo que si no me equivoco (y recuerdo mal) es una simple conexión TCP, lo único que tenes que hacer es definir tu estrategia de recepción de datos y no mucho más.
La recepción de datos se me ocurre por lo menos de 3 maneras:
La peor es bloqueante:
Código: Text
DWORD Result = 0;
while(1)
{
Result = recv(socket,buff,256,0);
if ( (Result == SOCKET_ERROR) || (!Result) )
{
break;
}
else
{
//procesar los datos
}
}
Otra forma es abrir un thread que se dedique a la lectura con CreateThread, esta se me antoja bastante simple y eficiente.
Por último la que considero la mejor opción es usar la función WSAAsyncSelect esta función hace que el S.O. envie los mensajes especificados (FD_READ, FD_WRITE, FD_CONNECT, FD_ACCEPT, FD_CLOSE, ETC) a la ventana que se pase como parametro logrando tener una conexión perfectamente asincrónica.
En la MSDN, http://msdn.microsoft.com (http://msdn.microsoft.com) podes encontrar mucha ayuda al respecto.