WSAStartup 함수는 Winsock DLL의 사용을 어떻게 시작합니까? 문서WSAStartup 함수는 Winsock DLL의 사용을 어떻게 시작합니까?
을 WSAStartup 기능은 응용 프로그램이나 DLL에 의해 라는 첫 번째 Windows 소켓 기능을해야합니다에 따르면
. 응용 프로그램 또는 DLL이 버전의 Windows 소켓을 지정하고 을 지정하고 특정 Windows 소켓 구현의 세부 정보를 검색 할 수 있습니다. 응용 프로그램 또는 DLL은 WSAStartup을 성공적으로 호출 한 후에 이상의 Windows 소켓 기능 만 발급 할 수 있습니다.
이 기능은 WSADATA
데이터 구조를 초기화하지만, 소켓 프로그래밍에서 우리는 어떻게 프로그램이 Windows 소켓 버전 및 기타 세부 사항에 대해 알고 온다 않는 기능에 WSDATA
을 통과하지? 이 예에서이 코드
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32")
void Run(int argc, char* argv[])
{
char* host = argc < 2 ? "" : argv[1];
struct hostent* entry = gethostbyname(host);
if(entry)
{
struct in_addr* addr = (struct in_addr*) entry->h_addr;
printf("IP Address: %s\n", inet_ntoa(*addr));
}
else
printf("ERROR: Resolution failure.\n");
}
int main(int argc, char* argv[])
{
WSADATA wsaData;
if(WSAStartup(0x202, &wsaData) == 0)
{
Run(argc, argv);
WSACleanup();
}
else
printf("ERROR: Initialization failure.\n");
}
에서
예를 들어나는 WSAStartup()
기능을 사용하여 WSADATA
데이터 구조를 초기화하고 와드 후 난 아무 wsaData
를 전달하고 있지 않다.
내 프로그램에서 wsaData
세부 정보를 어떻게 알 수 있습니까?
감사합니다.
또한 다음 링크를 참조하십시오. http://stackoverflow.com/questions/1869689/is-it-possible-to-tell-if-wsastartup-has-been-called-in-a-process on a previous 질문 나는 자기 발견을 통해 대답을 물었고 발견했다. – Matt
설명해 주셔서 감사합니다. – Searock
@Matt H 추가 정보를 제공해 주셔서 감사합니다. – Searock