C++中inet_pton、inet_ntop函數(shù)的用法
C++中inet_pton、inet_ntop函數(shù)
頭文件
windows下:
#include <WS2tcpip.h>
linux下:
#include <sys/socket.h> #include <netinet/in.h> #include<arpa/inet.h>
inet_pton函數(shù)
將點(diǎn)分十進(jìn)制串轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)序二進(jìn)制值,此函數(shù)對(duì)IPv4地址和IPv6地址都能處理。
- 第一個(gè)參數(shù)可以是AF_INET或AF_INET6:
- 第二個(gè)參數(shù)是一個(gè)指向點(diǎn)分十進(jìn)制串的指針:
- 第三個(gè)參數(shù)是一個(gè)指向轉(zhuǎn)換后的網(wǎng)絡(luò)字節(jié)序的二進(jìn)制值的指針。
inet_ntop函數(shù)
和inet_pton函數(shù)正好相反,inet_ntop函數(shù)是將網(wǎng)絡(luò)字節(jié)序二進(jìn)制值轉(zhuǎn)換成點(diǎn)分十進(jìn)制串。
- 第一個(gè)參數(shù)可以是AF_INET或AF_INET6:
- 第二個(gè)參數(shù)是一個(gè)指向網(wǎng)絡(luò)字節(jié)序的二進(jìn)制值的指針;
- 第三個(gè)參數(shù)是一個(gè)指向轉(zhuǎn)換后的點(diǎn)分十進(jìn)制串的指針;
- 第四個(gè)參數(shù)是目標(biāo)的大小,以免函數(shù)溢出其調(diào)用者的緩沖區(qū)。
樣例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main (void)
{
char IPdotdec[20]; //存放點(diǎn)分十進(jìn)制IP地址
struct in_addr s; // IPv4地址結(jié)構(gòu)體
// 輸入IP地址
printf("Please input IP address: ");
scanf("%s", IPdotdec);
// 轉(zhuǎn)換
inet_pton(AF_INET, IPdotdec, (void *)&s);
printf("inet_pton: 0x%x\n", s.s_addr); // 注意得到的字節(jié)序
// 反轉(zhuǎn)換
inet_ntop(AF_INET, (void *)&s, IPdotdec, 16);
printf("inet_ntop: %s\n", IPdotdec);
}inet_pton和inet_ntop使用總結(jié)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main (void)
{
char IPdotdec[20]; //存放點(diǎn)分十進(jìn)制IP地址
struct in_addr s; // IPv4地址結(jié)構(gòu)體
// 輸入IP地址
printf("Please input IP address: ");
scanf("%s", IPdotdec);
// 轉(zhuǎn)換
inet_pton(AF_INET, IPdotdec, (void *)&s);
printf("inet_pton: 0x%x\n", s.s_addr); // 注意得到的字節(jié)序
// 反轉(zhuǎn)換
inet_ntop(AF_INET, (void *)&s, IPdotdec, 16);
printf("inet_ntop: %s\n", IPdotdec);
return 0;
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++設(shè)計(jì)模式編程之Flyweight享元模式結(jié)構(gòu)詳解
這篇文章主要介紹了C++設(shè)計(jì)模式編程的Flyweight享元模式結(jié)構(gòu),享元模式在實(shí)現(xiàn)過程中主要是要為共享對(duì)象提供一個(gè)存放的"倉庫"(對(duì)象池),需要的朋友可以參考下2016-03-03
C++11/14如何使用typedef和using定義類型別名和別名模版
這篇文章主要介紹了C++11/14如何使用typedef和using定義類型別名和別名模版2023-04-04
C語言動(dòng)態(tài)內(nèi)存函數(shù)詳解
這篇文章主要介紹了C語言動(dòng)態(tài)內(nèi)存函數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09
C++之CNoTrackObject類和new delete操作符的重載實(shí)例
這篇文章主要介紹了C++之CNoTrackObject類和new delete操作符的重載實(shí)例,是C++程序設(shè)計(jì)中比較重要的概念,需要的朋友可以參考下2014-10-10
學(xué)習(xí)二維動(dòng)態(tài)數(shù)組指針做矩陣運(yùn)算的方法
這片文章介紹了如何利用二維動(dòng)態(tài)數(shù)組指針做矩陣運(yùn)算,需要的朋友可以參考下2015-07-07
詳解C++中String類模擬實(shí)現(xiàn)以及深拷貝淺拷貝
這篇文章主要介紹了詳解C++中String類模擬實(shí)現(xiàn)以及深拷貝淺拷貝的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的方法,需要的朋友可以參考下2017-10-10
C++中關(guān)鍵字constexpr的實(shí)現(xiàn)示例
constexpr是C++中用于編譯期計(jì)算的關(guān)鍵詞,它允許在編譯期確定值并進(jìn)行安全檢查,從而提高編譯效率和代碼的健壯性,本文主要介紹了C++中關(guān)鍵字constexpr的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2025-11-11

