環境: linux gcc
三個函數 (適合IPV4)
#include<arpa/inet.h>
in_addr_t inet_addr(const char * strptr); //將 IP 轉換成 網絡字節序
int inet_aton(const char * strptr,struct in_addr *inp); //將 IP 轉換成 網絡字節序存入inp中,返回int為1成功,返回為0,則失敗
char* inet_ntoa(struct in_addr in); //將網絡字節序 轉換成 IP地址 (注意該函數不可重入)
#include<stdio.h>
#include<arpa/inet.h> //ip地址轉換為 字節序
int main(int argc, char const *argv[])
{
const char *ipString = "192.168.1.168";
//使用inet_addr 將ip地址轉換成 網絡字節序
in_addr_t networkResult = inet_addr(ipString);
if(networkResult == INADDR_NONE){
printf("error");
}else{
printf("轉success to %#x \n",networkResult);
}
//inet_aton函數 將ip地址轉換成 網絡字節序
printf("開始將使用 inet_aton函數\n");
struct in_addr * inp;
int atonResult;
atonResult = inet_aton(ipString,inp);
if(atonResult ==1){
printf("inet_aton success \n");
printf(" in_addr_t : %#x \n",inp->s_addr);
}else{
printf("inet_aton error \n");
}
//inet_ntoa 函數 將網絡字節序 轉換成 ip地址
printf("將網絡字節序 轉換 成地址\n");
char* inet_ntoaAddr = inet_ntoa(*inp);
printf("網絡字節序 轉換 成 IPV4地址%s\n",inet_ntoaAddr);
return 0;
}
編譯run
兩個轉換函數(適合IPV4 和 IPV6)
#include<arpa/inet.h>
int inet_pton(int af,const char *src,void *dst); //參數(協議,地址字符串,結果存儲dst指向的內存)。
const char *inet_ntop(int af,const char *src,const char *dst ,socklen_t cnt); //最后一個參數是指目標內存大小。