Estoy escribiendo a clone of inetd en el que debo ejecutar un servidor que imprime la IP y el puerto del cliente que se conecta a él.Recuperación de IP/Puerto del Descriptor de Socket
Mientras sobreescribo STDIN
y STDOUT
con el descriptor de socket, my initial solution de hacer esto era recuperar la estructura sockaddr_in
, que contiene la información necesaria. Sin embargo, al hacer esto con getsockname()
, se devuelve una estructura vacía, con todos los bits configurados en 0.
¿Alguna idea de lo que está mal con mi enfoque? ¿Hay algún otro enfoque que pueda usar para recuperar el IP/Puerto?
Gracias
OP mencionó "sobrescribir" stdin y stdout con el descriptor de archivo para el socket, que está mal redactado en el mejor de los casos, pero podría indicar que el reemplazo se está haciendo incorrectamente y stdin (fd 0) no es realmente un socket ... –
@R .., revisa su código en https://github.com/konr/Licio/blob/master/05/time.c –
No sé si este es * el * problema, pero usar 'struct sockaddr' excepto como un sustituto realmente feo para' void * 'siempre es un error. Nunca debería tener objetos reales de tipo 'struct sockaddr'. Siempre use 'struct sockaddr_in',' struct sockaddr_in6', o 'struct sockadd_storage', según sea necesario. –