Como bien dice JuanK es fundamental que sepas el protocolo FINGER, lo podes encontrar acá:
http://www.faqs.org/rfcs/rfc742.html y acá
http://www.faqs.org/rfcs/rfc1288.htmlSabiendo 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:
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 podes encontrar mucha ayuda al respecto.