簡體   English   中英

客戶端的IP地址/ MAC

[英]IP address/MAC of a client

是否可以從sockaddr獲取客戶端計算機的IP地址。

對於客戶端,我指的是將用戶連接到服務器的系統或瀏覽器。

我假設客戶端位於某些代理/路由器的后面,並且未直接連接到服務器。

您可以獲取服務器向其發送響應數據包的IP地址。 通常,這是客戶端計算機的IP地址,但不必是:

  • IPv4 NAT設備(通常由公司網絡使用)隱藏客戶端的IP地址,而是公開NAT設備的地址。
  • 6對4轉換。 如果客戶端是僅本機IPv6的客戶端,則您的IPv4服務器將看到提供IPv4連接的6至4網關的IPv4地址。
  • 客戶端不直接連接到Internet,而是連接到代理服務器的代理,代理服務器代表服務器執行請求。 在這種情況下,服務器將看到代理服務器地址。

如果您需要客戶端計算機的IP地址,則客戶端必須將其作為數據發送到服務器。 請注意,不能保證您以這種方式收到的地址是真實的。 即使它是真實的,也不能保證它是唯一的(許多公司網絡使用192.168.XX系列中的地址保留供內部使用)。 您也不太可能無法通過其內部地址連接到客戶端。

選中同一問題的答案(如果我正確理解了您的問題), 從sockaddr結構獲取IPV4地址

socket.h狀態:

int accept (int socket, struct sockaddr *address,
                                 socklen_t *address_len);

地址:空指針,或指向將返回連接套接字地址的sockaddr結構的指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM