#include <iostream> #include <string> #include <vector> #include <atlstr.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") using namespace std; int main(int argc, char* argv[]) { CString m_IP; //IP地址臨時變量 CString m_LocalIP; char PCnameBuffer[128]; //獲得本地計算機名 CString m_PCname; WSAData data; //初始化:如果不初始化,以下代碼將無法執行 if (WSAStartup(MAKEWORD(1, 1), &data) != 0) { cout << "初始化錯誤,無法獲取主機信息..." << endl; } else { if (0 == gethostname(PCnameBuffer, 128)) { m_PCname = PCnameBuffer; struct hostent* pHost; //獲得本地IP地址 pHost = gethostbyname(PCnameBuffer); //pHost返回的是指向主機的列表 for (int i = 0; pHost != NULL&&pHost->h_addr_list[i] != NULL; i++) { //得到指向ip的psz變量 LPCSTR psz = inet_ntoa(*(struct in_addr *)pHost->h_addr_list[i]); m_IP += psz; } m_LocalIP = m_IP; } else { cout << "獲取主機信息失敗..." << endl; } } USES_CONVERSION; //聲明使用T2A函數 char* ComputerName = T2A(m_PCname); //T2A函數,將Cstring類型轉換為char* char* ComputerIp = T2A(m_LocalIP); cout << ComputerName << endl; return 0; }