게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
GCC에서 도메인네임으로 호스트 정보를 받아오는데 오류가 납니다.
게시물ID : programmer_16467짧은주소 복사하기
작성자 : 해머컴히얼
추천 : 1
조회수 : 365회
댓글수 : 5개
등록시간 : 2016/04/01 16:44:19
옵션
  • 본인삭제금지
소스 파일
------------------------------------------------------------------------------------------------------------
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
struct hostent *hp;
struct in_addr in;
int i;
char buf[20];

printf("No error1\n");
hp = gethostbyname(argv[1]);

if(hp = NULL)
{
printf("gethostbyname fail \n");
exit(0);
}
printf("호스트 이름 : %s \n", hp->h_name);
printf("호스트 주소타입 번호 : %d \n", hp->h_addrtype);
printf("호스트 주소의 길이 : %d \n", hp->h_length);

for(i=0;hp->h_addr_list[i];i++)
{
memcpy(&in.s_addr, hp->h_addr_list[i], sizeof(in.s_addr));
inet_ntop(AF_INET, &in, buf, sizeof(buf));
printf("IP주소(%d번째) : %s \n", i+1, buf);
}

for(i=0;hp->h_aliases[i];i++)
printf("호스트 별명(%d 번째) : %s", i+1, hp->h_aliases[i])

return 0;
}

------------------------------------------------------------------------------------------------------------

리눅스 상에서 이러한 프로그램을 돌리려고 하는데 세그멘테이션 오류가 발생합니다.
좀 더 정확히 알아보려고 printf문을 소스문 사이에 넣어서 알아본결과
hp를 참조하려 할 때 오류가 발생하고, hp의 주소를 출력해 본 결과 nil값이 나왔습니다. (main함수로 넘겨준 argument값은 www.google.com입니다.)
그렇다는 것은 gethostbyname()함수가 제대로 동작이 안되었다는 것이고, if(hp = NULL)이라는 조건문이...... 아......... 감사합니다.
질문글 올리다가 답을 찾았습니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호