윈속의 이해
본 자료는 7페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
해당 자료는 7페이지 까지만 미리보기를 제공합니다.
7페이지 이후부터 다운로드 후 확인할 수 있습니다.

본문내용

cv() FD_OOB
표 5-4 메시지 반복 발생 함수
윈속의 IP 주소 변환 함수
(1) WSAAsyncGetHostByAddr()
▶ IP 주소로부터 해당 호스트의 이름과 기타 정보를 알아내기 위한 비동기 함수이며 BSD 소켓의 gethostbyaddr()과 마찬가지로 hostent 구조체를 리턴한다.
▶ hostent 구조체의 내용은 아래와 같다.
struct hostent {
char FAR * h_name; /* 호스트 이름 */
char FAR * FAR * h_aliases; /* 호스트의 별명 목록 */
shor h_addrtype; /* 호스트 주소 타입 */
short h_length; /* 주소의 길이 */
char FAR * FAR * h_addr_list; /* 주소 목록 */
#define h_addr h_addr_list[0] /* 대표적인 주소를 h_addr에 저장 */
};
▶ WSAAsyncGetHostByAddr()의 사용 문법은 다음과 같다.
HANDLE WSAAsyncGetHostByAddr (
HWND Hwnd, /* 윈도우 핸들 */
unsigned int Msg, /* 이 함수 종료시 전송할 메시지 */
const char *addr, /* 호스트의 IP 주소 */
int len, /* addr의 길이 */
int type, /* 주소 타입으로 인터넷에서는 AF_INET */
char *buf, /* hostent 구조체의 포인터 */
int buflen); /* buf의 길이 */
▶ 아래는 WSAAsyncGetHostByAddr()의 사용 예인데 IP 주소가 203.252.65.3인 호스트의 도메인 네임을 메시지 박스에 출력한다.
▶ 아래에서 PHOSTENT는 hostent 구조체를 가리키는 포인터 타입을 지정하며 MAXGETHOSTSTRUCT는 hostent 구조체를 담기에 충분한 크기의 상수로 Winsock.h에 정의되어 있다.
u_long m_Addr ;
char m_lpszHostEntryBuf[MAXGETHOSTSTRUCT] ;
PHOSTENT m_phostent; /* hostent 구조체 포인터 */
m_Addr = inet_addr("203.252.65.3");
WSAAsyncGetHostByAddr(m_hWnd, WM_USER_ASYNCGETHOSTBYADDR,
(char *)&m_Addr, 4, PF_INET, m_lpszHostEntryBuf, MAXGETHOSTSTRUCT) ;
m_phostent = (PHOSTENT)m_lpszHostEntryBuf ;
MessageBox(hwnd, m_phostent->h_name, "호스트 이름", MB_OK);
▶ 한편 WSAAsyncGetXByY과 같은 형태의 비동기 함수의 실행 결과는 lParam에 들어있게 된다.
▶ lParam의 상위 16비트에는 에러코드가 하위 16비트에는 비동기 함수 실행 결과가 들어있는 버퍼의 크기가 들어 있다.
▶ 이러한 에러 값과 버퍼의 크기 값을 lParam으로부터 편리하게 알아내기 위하여 WSAGETASYNCERROR()와 WSA- GETASYNCBUFLEN() 매크로가 각각 정의되어 있다.
(2) WSAAsyncGetServByName()
▶ 이 함수는 ftp, mail과 같은 TCP/IP 표준 응용 프로그램의 포트번호를 찾기 위해 사용되는 비동기 함수이다.
▶ 이 함수가 성공적으로 수행되면 servent라는 구조체의 포인터를 리턴하는데 servent 구조체의 내용은 다음과 같다.
struct servent {
char FAR * s_name; /* 공식적인 서비스 이름 */
char FAR * FAR * s_aliases; /* 서비스의 별명 리스트 */
short s_port; /* 포트번호 */
char FAR * s_proto; /* 프로토콜 종류 */
};
▶ WSAAsyncGetServByName()의 사용 문법은 다음과 같다.
HANDLE WSAAsyncGetServByName (
HWND Hwnd, /* 이 함수의 메시지를 수신할 윈도우 핸들 */
unsigned int Msg, /* 이 함수 종료시 전송할 메시지 */
const char *name, /* 포트번호를 알고자 하는 서비스 이름 */
const char *proto, /* TCP나 UDP를 지정(또는 NULL) */
char *buf, /* servent 구조체의 포인터 */
int buflen); /* buf의 길이 */
▶ 이 함수의 사용 예로 UDP 프로토콜로 구현된 time 서비스의 포트번호를 찾아내어 화면에 출력하는 예를 아래에 보였다.
▶ 여기서 PSERVENT는 servent 구조체를 가리키는 포인터 타입을 말한다.
PSERVENT m_pservent; /* servent 구조체 포인터 */
char m_lpszMsg[100]; /* 화면에 출력할 메시지 버퍼 */
char m_lpszServEntryBuf[MAXGETHOSTSTRUCT];
WSAAsyncGetServByName(m_hWnd, WM_USER_ASYNCGETSERVBYNAME, "time",
"udp", m_lpszServEntryBuf, MAXGETHOSTSTRUCT) ;
m_pservent = (PSERVENT)m_lpszServEntryBuf;
wsprintf(m_lpszMsg, "%s 서비스 포트 : %d", m_pservent->s_name,
m_pservent->s_port);
(3) WSAAsyncGetHostByName()
▶ 이 함수는 호스트 이름을 사용하여 IP 주소를 찾아내는 함수이며 사용 문법은 아래와 같다.
HANDLE WSAAsyncGetHostByName (
HWND hwnd, /* 메시지를 수신할 윈도우 핸들 */
unsigned int wMsg, /* 수신할 메시지 */
char FAR *name, /* 찾을 호스트 네임의 포인터 */
char FAR *buf, /* 결과가 리턴되는 버퍼의 포인터 */
int bufflen); /* 버퍼의 길이 */

키워드

윈속,   이해,   DLL,   프로그래밍,   링크
  • 가격3,300
  • 페이지수21페이지
  • 등록일2001.11.29
  • 저작시기2001.11
  • 파일형식한글(hwp)
  • 자료번호#190487
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니