Download presentation
Presentation is loading. Please wait.
1
바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
소켓 프로그래밍을 위한 유틸리티 함수들 바이트 순서 변환 함수 주소 변환 함수 바이트 조작 함수 원격지 호스트 정보를 얻는 함수
2
1. 바이트 순서 변환 함수 Big-Endian Little-Endian - 데이터의 최상위 바이트의 내용을
저장될 메모리의 시작주소에 저장 - 모토로라 마이크로프로세서 및 IBM 메인 프레임 기반 Little-Endian 데이터의 최하위 바이트의 내용을 저장될 메모리의 시작주소에 저장 DEC VAX 컴퓨터 및 인텔 마이크로프로세서
3
1. 바이트 순서 변환 함수 변환 함수 unsigned short int htons (unsigned short int hostshort); 16비트 기반에 호스트 형식을 네트워크 형식으로 변환하는 함수 unsigned long int htonl (unsigned long int hostlong); 32비트 기반에 호스트 형식을 네트워크 형식으로 변환하는 함수 unsigned short int ntohs (unsigned short int netshort); - 16비트 기반에 네트워크 형식을 호스트 형식으로 변환하는 함수 unsigned long int ntohl (unsigned long int netlong); - 32비트 기반에 네트워크 형식을 호스트 형식으로 변환하는 함수
4
2. 주소 변환 함수 변환 함수 unsigned long int inet_addr (const char * strptr);
32비트 이진 바이너리 주소를 ‘Dotted Decimal' 형식의 문자열로 또는 그 반대로 변환하여 주는 기능 unsigned long int inet_addr (const char * strptr); ‘Dotted Decimal' 문자열 형태의 주소를 네트워크 바이트 순서를 갖는 이진 바이너리로 바꾸는 함수 입력 값이 적절치 못할 경우 INADDR_NONE('-1')을 반환 ’-1‘은 ’Dotted Decimal’ 로 표현 시 ‘ ’ 이므로 유효성 검사가 반드시 필요
5
2. 주소 변환 함수 int inet_aton (const char * strptr, struct in_addr * addrptr); 'Dotted Decimal' 형태의 문자열을 바이너리 형태로 바꾸는 함수 ‘strptr’ 로 들어온 ‘Dotted Decimal' 형태의 문자열은 변환되어 'in_addr' 타입의 ’addrptr‘ 에 저장됨 - 주소가 올바르다면 ‘0’ 이 아닌 값, 그렇지 않다면 ‘0’ 을 반환 char * inet_ntoa (struct in_addr inaddr); 'in_addr' 형의 바이너리 주소 ‘inaddr’을 ‘Dotted Decimal' 형태의 문자열로 변경 반환되는 문자열은 정적으로 할당된 버퍼에 저장 함수의 연속적인 호출은 버퍼를 중복하여 덮어 쓰므로 주의
6
3. 바이트 조작 함수 void * memset (void * dest, int c, size_t len);
설정한 크기(len) 만큼 해당 값(c)으로 세팅 void * memcpy (void * dest, const void * src, size_t nbytes); 메모리 영역(src)으로부터 해당 사이즈(nbytes)만큼 바이트를 복사하여 목표로 한 주소(dest)에 복사 Int memcmp (const void * ptr1, const void * ptr2, size_t nbytes); 두 주소(ptr1, 2)에 대해 특정 크기(nbytes)만큼 비교 ptr1 < ptr2 → 0 보다 작은 값 ptr1 > ptr2 → 0 보다 큰 값 ptr1 = ptr2 → 0 을 반환
7
4. 원격지 호스트 정보를 얻는 함수 struct hostent * gethostbyname (const char * hostname); 전달 값으로 호스트의 이름(도메인)을 받아서 hostent 구조체에 결과 값을 돌려주는 함수 struct hostent * gethostbyaddr (const char * addr, size_t len, int family); 호스트의 IP주소(바이너리 형태의 주소)를 이용하여 해당 호스트에 대한 정보를 저장 addr은 호스트 IP 주소이고 len 은 IP 주소의 크기(IPv4 = 4, IPv6 = 16) int gethostname (char * name, size_t namelen); 현재의 호스트 이름을 반환 전달 인자 name은 호스트의 이름을 저장할 곳의 주소 namelen 은 name의 바이트 길이 성공한 경우 반환 값 0, 실패인 경우 반환 값 -1
8
4. 원격지 호스트 정보를 얻는 함수 struct servent * getservbyname (const char * servname, const char * protoname); 해당 호스트에서 진행되고 있는 서비스에 대한 각 정보를 서비스에 대한 이름과 해당 프로토콜로 얻을 수 있게 해주는 함수 수행 중 에러 발생 시에는 결과 값으로 NULL 반환 struct servent * getservbyport (int port, const char * protoname); 해당 호스트에서 진행되고 있는 서비스에 대한 각 정보를 포트 번호로 얻을 수 있게 해주는 함수
9
4. 원격지 호스트 정보를 얻는 함수 * hostent 구조체
10
4. 원격지 호스트 정보를 얻는 함수 * servent 구조체
Similar presentations