首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

WinSock 取得本機主機名稱與 IP 位址

     編輯:關於C++

使用 Winsock API gethostname 與 gethostbyname 可輕鬆取得本機主機名稱與 IP 位址。本文提供 C++Builder 範例程式,包含 WinSock 初始化與清理流程。

完整程式碼


void __fastcall TForm1::Button1Click(TObject *Sender) {
    hostent* p;
    char s[128];
    char* p2;
    // 取得電腦名稱
    gethostname(s, 128);
    p = gethostbyname(s);
    Memo1->Lines->Add(p->h_name);
    // 取得 IP 位址
    p2 = inet_ntoa(*((in_addr*)p->h_addr));
    Memo1->Lines->Add(p2);
}

void __fastcall TForm1::FormCreate(TObject *Sender) {
    WORD wVersionRequested = MAKEWORD(1, 1);
    WSADATA wsaData;
    WSAStartup(wVersionRequested, &wsaData); // 啟動 WinSock
}

void __fastcall TForm1::FormDestroy(TObject *Sender) {
    WSACleanup(); // 清理 WinSock
}

關鍵點說明

  • gethostname 取得本機主機名稱(NetBIOS 名稱)。
  • gethostbyname 解析主機名稱回傳 hostent 結構,h_addr 為第一個 IP 位址(網路位元組序)。
  • inet_ntoa 將 in_addr 轉為點分十進位字串。
  • 多網卡情況下,h_addr_list 包含所有 IP,本例僅取第一個。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved