2009-08-18 16 views
5

En C/C++, puede usar la llamada regular gethostbyname() para convertir una cadena de direcciones IP con puntos ("127.0.0.1" en el caso de localhost) en una estructura adecuada para estándar llamadas de socketC++ IP Address forma legible por humanos

¿Cómo lo traduces? Sé que puedo hacer algunos cambios de bit para obtener exactamente los conjuntos de bits que quiero y simplemente imprimirlos, pero ¿hay alguna función "estándar" para hacer esto por mí? Es para enviar a archivos de registro, de modo que "realmente" sé a quién/a qué me estoy conectando, y por lo tanto, una dirección de puntos legible por el ser humano es mucho mejor que el hexadecimal crudo.

Gracias.

Respuesta

10

En primer lugar, en el nuevo código, en general, debería preferir usar getaddrinfo() a gethostbyname(), que es antiguo y torpe, y es difícil de usar para admitir tanto IPv4 como IPv6. Vea aquí: http://beej.us/guide/bgnet/output/html/multipage/syscalls.html

En segundo lugar, la función que hace lo que desea se llama inet_ntop.

+1

Marqué esto como correcto, pero descubrí que no funcionaba en Windows, pero encontré que la llamada a la función correcta allí es inet_ntoa que hace casi lo mismo. No es compatible con IPv6 de acuerdo con beej, pero está en winsock.h normal para los usuarios de win32. –

Cuestiones relacionadas