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

C語言 Socket 獲取對端 IP 地址的方法

     編輯:關於C語言

在網絡編程中,獲取連接對端的 IP 地址是常見需求。通過 accept() 函數返回的客戶端地址結構體,我們可以輕鬆提取對方的 IP 信息。

核心步驟

  1. 定義 struct sockaddr_in 變量用於存儲客戶端地址
  2. 調用 accept() 時傳遞該結構體指針及長度
  3. 使用 inet_ntoa() 將二進制 IP 轉換為點分十進制字符串

代碼示例

struct sockaddr_in clientaddr;
socklen_t addrlen = sizeof(clientaddr);
int clientfd = accept(serverfd, (struct sockaddr*)&clientaddr, &addrlen);
if (clientfd > 0) {
    char *client_ip = inet_ntoa(clientaddr.sin_addr);
    printf("客戶端 IP: %s\n", client_ip);
}

注意事項

  • inet_ntoa() 返回靜態緩衝區,多線程環境下建議使用 inet_ntop()
  • IPv6 環境請使用 struct sockaddr_in6 和 inet_ntop()
  • 錯誤處理:檢查 accept() 返回值,失敗時返回 -1

掌握這個技巧,能幫助你實現基於 IP 的訪問控制、日誌記錄等網絡應用功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved