舊式 inet_addr、inet_ntoa 僅支援 IPv4,**棄用**。
// IPv4
struct sockaddr_in sa;
inet_pton(AF_INET, "192.0.2.1", &(sa.sin_addr));
// IPv6
struct sockaddr_in6 sa6;
inet_pton(AF_INET6, "2001:db8:63b3:1::3490", &(sa6.sin6_addr));
錯誤檢查必不可少:
1:成功0:輸入非合法地址格式-1:系統錯誤(查 errno)char ip4[INET_ADDRSTRLEN]; // 16 字節足夠 "255.255.255.255"
char ip6[INET6_ADDRSTRLEN]; // 46 字節足夠 IPv6 全寫
inet_ntop(AF_INET, &(sa.sin_addr), ip4, sizeof(ip4));
inet_ntop(AF_INET6, &(sa6.sin6_addr), ip6, sizeof(ip6));

IPv4 地址枯竭。RFC 1918 保留三塊私有地址塊,僅用於內網,公網路由器**不轉發**:
| 類別 | CIDR | 範圍 | 可用主機數 |
|---|---|---|---|
| A 類 | 10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | 16,777,214 |
| B 類 | 172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | 1,048,574 |
| C 類 | 192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | 65,534 |
對應用層開發者:**完全透明**,無需感知 NAT 存在。只需綁定 0.0.0.0 或具體私有 IP,系統協議棧自動處理。
inet_pton/ntop 僅處理**數字 IP**,域名解析請用 getaddrinfo()。掌握地址轉換 API 與私有網絡/NAT 基礎,是編寫健壯跨平台網絡程式的必修課。