#include "stdafx.h" #include "InitSock.h" int _tmain(int argc, _TCHAR* argv[]) { CInitSock initSock1; initSock1.new1 (true); char szHost[256]; //取得本地主机名称 ::gethostname(szHost,256); hostent *pHost=::gethostbyname(szHost); //打印出所有IP地址 in_addr addr; for(int i=0;;i++) { char *p=pHost->h_addr_list[i]; if(p==NULL) break; memcpy(&addr.S_un.S_addr,p,pHost->h_length); char *szIp=::inet_ntoa(addr); printf("本机IP地址:%s",szIp); getchar(); } return 0; } CInitSock 类 #include <winsock2.h> #pragma comment(lib,"WS2_32") class CInitSock { public: CInitSock(void); ~CInitSock(void); // 初始化 void new1(bool t); }; #include "StdAfx.h" #include "InitSock.h" CInitSock::CInitSock(void) { WSADATA wsaData; WORD sockVersion=MAKEWORD(2,2); if (::WSAStartup (sockVersion,&wsaData)!=0) { exit(0); } } CInitSock::~CInitSock(void) { ::WSACleanup(); } // 初始化 void CInitSock::new1(bool t) { WSADATA wsaData; WORD sockVersion=MAKEWORD(2,2); if (::WSAStartup (sockVersion,&wsaData)!=0) { exit(0); } }