2009-08-18 3 views
5

C/C++에서는 정규 gethostbyname() 호출을 사용하여 점으로 구분 된 IP 주소 문자열 (localhost의 경우 "127.0.0.1")을 표준에 적합한 구조로 변환 할 수 있습니다 소켓 호출.C++ IP 주소 사람이 읽을 수있는 형식

어떻게 다시 번역합니까? 내가 원하는 비트 세트를 정확히 얻고 비트 값을 출력하기 위해 비트 - 시프 팅을 할 수 있다는 것을 알고 있지만, 이것을 위해 "표준"기능이 있습니까? 로그 파일에 출력하기 때문에 연결 대상을 "실제로"알 수 있습니다. 따라서 사람이 읽을 수있는 점으로 구분 된 주소는 원시 16 진수보다 훨씬 낫습니다.

감사합니다.

답변

10

우선 새로운 코드에서는 일반적으로 getaddrinfo()를 gethostbyname()으로 사용하는 것이 더 바람직합니다. gethostbyname()은 IPv4와 IPv6를 모두 지원하는 데 사용하기가 쉽지 않습니다. 여기를 참조하십시오 : http://beej.us/guide/bgnet/output/html/multipage/syscalls.html

둘째, 원하는 기능을 수행하는 것은 inet_ntop입니다.

+1

나는 이것을 올바르게 표시했지만 창문에서는 작동하지 않는다는 것을 알았지 만 올바른 함수 호출이 거의 똑같은 일을하는 inet_ntoa라는 것을 알았다. beej에 따라 IPv6을 지원하지 않지만, win32 사용자는 일반적인 winsock.h에 있습니다. –

관련 문제