IP地址轉換函數(IP地址和網絡字節序 相互轉換)


環境: 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
image

兩個轉換函數(適合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);	//最后一個參數是指目標內存大小。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM