WSAAsyncSelect() 소켓의 I/O 상태 변화 즉, 연결요청, 데이터 수신, 송신 버퍼의 사용가능 등의 이벤트를 시스템이 메시지를 통하여 알려주도록 요청함 
WSAAsyncGetHostByAddr() 호스트 주소로부터 호스트 정보를 얻음 
WSAAsyncGetHostByName() 호스트 이름으로부터 호스트 정보를 얻음 
WSAAsyncGetProtoByName() 프로토콜 이름으로부터 프로토콜 번호를 얻음 
WSAAsyncGetProtoByNumber() 프로토콜 번호로부터 프로토콜 이름을 얻음 
WSAAsyncGetServByName() 서비스 이름으로부터 서비스 정보를 얻음 
WSAAsyncGetServByPort() 포트번호로부터 서비스 정보를 얻음 


DWORD GetWindowThreadProcessId (
HWND       hWnd;
        LPDWORD lpdwProcessId
);
HWND 값을 이용하여 프로세스 ID를 알려주는 함수이다.
hWnd              - PID를 얻고자 하는 윈도우의 핸들
lpdwProcessId - 반환받을 PID의 포인터, NULL로 설정할 경우 PID는 리턴값으로 반환된다.

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

WSAAsyncGetServByPort

getservbyport

두 함수는 서비스 이름이 등록된 파일에서 입력된 포트번호에 대한 서비스를 리턴해 준다.

http://blog.naver.com/lseykwang?Redirect=Log&logNo=100071270266

위 사이트에서 검색..

WSAAsyncGetProtoByNumber()

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

문법 HANDLE WSAAsyncGetServByPort(HWND hwnd, UINT wMsg, int port, const char *proto, char *buf, int buflen) ; 

인자

hwnd 함수 호출이 완료되었을 때 메시지를 수신할 윈도우의 핸들 
wMsg 함수 호출이 완료되었을 때 보낼 메시지 
port 서비스 포트 번호 
proto 프로토콜의 이름을 가리키는 문자열의 포인터 
buf servent구조체를 수신할 버퍼의 포인터 
buflen 버퍼의 크기 
설명

getservbyport()의 비동기형 함수로 포트 번호와 프로토콜 이름에 해당하는 서비스 정보 구조체 servent를 만들고 응용 프로그램 윈도우 hwnd에게 메시지 wMsg를 보낸다. 

리턴값

성공 비동기 태스크 핸들 
실패 0 
WSAGetLastError() :

WSANOTINITALISED, WSAENETDOWN, WSAEINPROGRESS, WSAEINVAL WSAEALREADY 

 

windows socket system call 요약 
-----------------------------------------------------------------------------------------------------

BOOL WINAPI GetFileInformationByHandle(
  __in   HANDLE hFile,
  __out  LPBY_HANDLE_FILE_INFORMATION lpFileInformation
);
핸들을 이용해서 파일 정보를 얻어오는 것
hFile : 정보를 얻고자 하는 파일의 핸들
lpFileInformation : BY_HANDLE_FILE_INFORMATION구조체 변수의 주소를 전달. 여기로 전달되는 주소의 변수에 파일 정보가 채워짐.

typedef struct _BY_HANDLE_FILE_INFORMATION {
  DWORD    dwFileAttributes; //파일의 특성 정보
  FILETIME ftCreationTime; //파일의 생성 날짜
  FILETIME ftLastAccessTime; //파일에 마지막으로 액세스 한 날짜
  FILETIME ftLastWriteTime; //파일에 마지막으로 수정한 날짜
  DWORD    dwVolumeSerialNumber;
  DWORD    nFileSizeHigh; //대용량이 이 변수도 읽어와야함
  DWORD    nFileSizeLow; //4G이하 파일의 크기를 얻어올 때
  DWORD    nNumberOfLinks;
  DWORD    nFileIndexHigh;
  DWORD    nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION;

=================================================
DWORD WINAPI GetFullPathName(
  __in   LPCTSTR lpFileName,
  __in   DWORD nBufferLength,
  __out  LPTSTR lpBuffer,
  __out  LPTSTR *lpFilePart
);
파일 이름을 통해서 파일경로 정보를 얻어야 할 때 사용
lpFileName : Full Path를 확인하고자 하는 파일 이름을 전달한다.
nBufferLength : Full Path를 저장할 버퍼에 저장 가능한 문자열 길이를 지정한다.(바이트크기가 아니라 문자열 길이!)
lpBuffer : Full Path를 저장할 버퍼의 주소값을 지정한다.
lpFilePart : Full Path가 문자열로 버퍼에 저장된 이후, 버퍼의 특정 위치를 가리키는 포인터 값이 저장(특정 위치부터 출력하면 파일명 나옴)
=================================================






함 수 기 능
 select() 소켓의 상태 변화(읽기, 쓰기, 오류 발생)를 알려줌
 gethostbyaddr() 호스트 주소로부터 호스트 정보를 얻음
 gethostbyname() 호스트 이름으로부터 호스트 정보를 얻음
 getprotobyname() 프로토콜 이름으로부터 프로토콜 번호를 얻음
 getprotobynumber() 프로토콜 번호로부터 프로토콜 이름을 얻음
 getservbyname() 서비스 이름으로부터 서비스 정보를 얻음
 getservbyport() 포트번호로부터 서비스 정보를 얻음

위와 같은 blocking 함수들은 소켓의 동작 모드에 관계없이 항상 블록될 수 있는 함수이다
이러한 함수를 사용할 때 프로그램이 블록되는 문제를 해결하기 위하여, 윈속에서는 이들 blocking 함수와 같은 기능을 수행하면서 실제로는 비동기 모드로 동작하는 즉, 함수 실행결과를 비동기적으로 알려주는 비동기 함수들을 제공하고 있다. 
  함 수  기 능
 WSAAsyncSelect() 소켓의 I/O 상태 변화 즉, 연결요청, 데이터 수신, 송신 버퍼의 사용가능 등의 이벤트를 시스템이 메시지를 통하여 알려주도록 요청함 
 WSAAsyncGetHostByAddr() 호스트 주소로부터 호스트 정보를 얻음 
 WSAAsyncGetHostByName() 호스트 이름으로부터 호스트 정보를 얻음
 WSAAsyncGetProtoByName()  프로토콜 이름으로부터 프로토콜 번호를 얻음
 WSAAsyncGetProtoByNumber() 프로토콜 번호로부터 프로토콜 이름을 얻음
 WSAAsyncGetServByName()  서비스 이름으로부터 서비스 정보를 얻음
 WSAAsyncGetServByPort() 포트번호로부터 서비스 정보를 얻음







'NativeCode > api' 카테고리의 다른 글

[팁] Heap 메모리 검증하기.. | VC++ 일반  (0) 2010.05.09
WSAGetLastError()  (0) 2010.04.06
소켓 옵션  (0) 2010.04.01
Broadcasting 예제  (0) 2010.03.31
UDP Server, Client  (0) 2010.03.31

+ Recent posts