도와주세요.. 제발 프리즈!! 네트워크에서 이진수 출력하는거요

익명 사용자의 이미지

main()
{
struct hostent *hoststruct;
struct in_addr myindaddr;
char hostname[255];
int i;
gethostname(hostname,100);
hoststruct = gethostbyname(hostname);
printf("This hostname is %s\n",hoststruct->h_name);
i = 0;
while(hoststruct->h_addr_list[i] != NULL) {
myindaddr.s_addr = *((u_long *)(hoststruct-
>h_addr_list[i]));
printf("IP address %s\n", inet_ntoa(myindaddr));
i++;
}
printf("IP address %s\n",inet_addr(myindaddr));
}
이러케 하면 에러가 나와여.. 저기서 IP조수를 이진수로 출력해야 하는뎅
도저히 모르겠어요.. 가르쳐주세요.. 헬프~~

익명 사용자의 이미지

myindaddr.s_addr = *((u_long *)(hoststruct->h_addr_list[i]));

myindaddr.s_addr은 그 자체가 32Bits 값이죠.
주의할점은 주소가 반대로 저장되었다는 점입니다.
즉, 127.0.0.1이면 1.0.0.127형태로 되어있죠.
16진수로 표현하자면
0100007F로 표기가 되어있다는 뜻입니다.
에러의 원인은 숫자(%d)를 문자(%s)형태로 출력하려했기에 발생하는
겁니다.

익명 사용자의 이미지

감사합니다... ^^ 너무 감사해요... ... 감사합니다..