inet_pton与inet_ntop

【c语言网络编程】inet_pton函数 :通过指针 `p` 访问 `data_ip` 的每个字节,并打印出来。`:调用 `inet_pton` 函数,将点分十进制的 IP 地址转换为网络字节顺序的 32 位无符号整数,并将结果存储在 `data_ip` 中。`:定义一个无符号字符型指针 `p`,指向 `data_ip` 的起始地址,以便访问 `data_ip` 的每个字节。2. `#include <arpa/inet.h>`:包含了一些网络编程相关的函数声明,比如 `inet_pton`,用于 IP 地址的转换。 阅读详情


 

Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换

而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。

 

inet_pton函数

原型如下[将"点分十进制" -> "整数"]

#include 

#include 

#include 

int inet_pton(int af, const char *src, void *dst);

//这个函数转换字符串到网络地址,第一个参数af是地址族,转换后存在dst中

inet_pton是inet_addr的扩展,支持的多地址族有下列:

af = AF_INET

src为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址转换为in_addr的结构体,并复制在*dst中

af = AF_INET6

src为指向IPV6的地址,函数将该地址转换为in6_addr的结构体,并复制在*dst中

如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af指定的地址族和src格式不对,函数将返回0。

 

inet_ntop函数

原型如下[将"点分十进制" -> "整数"]

#include 

#include 

#include 

const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);

//这个函数转换网络二进制结构到ASCII类型的地址,参数的作用和上面相同,只是多了一个参数socklen_t cnt,

//他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC

 

例程:

#include 

#include 

#include 

#include 

#include 

#include 

int main (void)

{

  char IPdotdec[20]; // 存放点分十进制IP地址

  struct in_addr s;  // IPv4地址结构体

  // 输入IP地址

  printf("Please input IP address: ");

  scanf("%s", &IPdotdec);

  // 转换

  inet_pton(AF_INET, IPdotdec, (void *)&s);

  printf("inet_pton: 0x%x\n", s.s_addr); // 注意得到的字节序

  // 反转换

  inet_ntop(AF_INET, (void *)&s, IPdotdec, 16);

  printf("inet_ntop: %s\n", IPdotdec);

}

详解inet_pton()和inet_ntop()函数 主要介绍了inet_pton()和inet_ntop()函数,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 立即下载

相关推荐

AMD Ryzen AI Max+ 395四机集群实战:开源工具链与大模型推理优化全解析

本文详细解析了基于AMD Ryzen AI Max+ 395处理器的四机集群搭建与优化实践,涵盖硬件配置、开源工具链评测及大模型推理优化技巧。通过深度测试,揭示了集群在AI推理中的性能瓶颈与解决方案,特别适合需要扩展显存的大模型实验场景。文章还提供了成本效益分析,帮助开发者做出更明智的选型决策。

weixin_29041767的博客 1521

inet_pton()和inet_ntop()函数详解

inet_ntoa 函数转换网络字节排序的地址为标准的ASCII以点分开的地址,该函数返回指向点分开的字符串地址(如192.168.1.10)的指针,该字符串的空间为静态分配的,这意味着在第二次调用该函数时,上一次调用将会被重写(复盖),所以如果需要保存该串最后复制出来自己管理!(2)第一个函数尝试转换由strptr指针所指向的字符串,并通过addrptr指针存放二进制结果,若成功则返回值为1,否则如果所指定的family而言输入字符串不是有效的表达式格式,那么返回值为0.

木牛的博客 8226

关于MII、RMII、GMII、RGMII、PHY、网络变压器、RJ45的硬件总结

文章目录前言一、网络传输结构及原理1.以太网的工作原理2.TCP/IP协议3.数据链路层(MAC)二、介质独立接口MII,RMII,GMII,RGMII1.MII(Media Independent interface)2.RMII(Reduced Media Independent Interface)3.GMII(Gigabit Medium Independent)4.RGMII(Reduced Gigabit Media Independent Interface)三、物理层芯片(PHY)二、使用步

weixin_44415816的博客 3万+

inet_pton函数

这个函数的功能:将IP地址从字符串格式转换成网络地址格式,支持Ipv4和Ipv6. 函数原型: static int inet_pton(int af, const char *src,void *dst) af: address family(协议族),支持的协议族有下面几种: AF_INET Inetnet的Ipv4协议 AF_INET Inetnet的Ipv6协议 src:

My Blog 6109

2023,程序员的出路在哪里?

可是似乎从30岁开始这工资就没涨过,前面跳槽几次涨的薪水在30岁以后跳槽已经不管用了、定格了,这几年由于市场环境不景气,程序员竞争越来越激烈,36岁跟30拿的工资一模一样,不仅工资拿的一样,反而事情还越来越多了,这些都意味着什么?处理故障需要的通常不仅仅是写代码的能力,还需要对一个系统的全貌要有一定的掌握。虽然目前不少大型互联网企业都在进行结构性调整,但是从互联网行业发展的基本面来看,未来在产业互联网发展的过程中,IT行业和传统行业将会释放出大量的就业岗位,所以未来程序员的发展空间还是非常值得期待的。

AI天才研究院 20万+

2020计算机专业保研夏令营面经:中科院计算所网数机试题目

计算所网络数据科学与技术重点实验室的第一阶段是机试。机试不限程序语言,要求提交源代码。

乔卿的博客 2957

inet_pton()和inet_ntop()功能及使用方法

inet_pton()和inet_ntop()功能及使用方法 这两个函数是随IPv6出现的函数,对于IPv4地址和IPv6地址都适用,函数中p和n分别代表表达(presentation)和数值(numeric)[^1]。 inet_pton() 功能: 将标准文本表示形式的IPv4或IPv6 Internet网络地址转换为数字二进制形式。 参数: INT WSAAPI inet_pton( INT Family, //地址家族 IPV4使用AF_INET IPV6使用AF_INET6 P

weixin_38420191的博客 3万+

RT-DETR改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新

一、本文介绍 本文记录的是利用Strip Pooling模块优化RT-DETR的目标检测网络模型。Strip Pooling结合了长而窄的卷积核形状在一个空间维度上的长程关系捕捉能力和在另一个空间维度上的局部细节捕捉能力,有效地处理复杂的场景信息。这一机制通过采用1×N1×N1×N或N×1N×1N×1的池化核形状来适应不同的图像特征,提高模型对目标形状和分布的适应性。在场景解析网络中,Strip Pooling可以被用于提升对具有长程带状结构或离散分布目标的解析能力,特别是在复杂场景或不同对象布局条件下效果

Limiiiing的博客 580

inet_addr()和inet_pton()的使用

inet_addr() 原型: in_addr_t inet_addr(const char *cp); 返回值: 如果正确执行将返回一个无符号长整数型数。如果传入的字符串不是一个合法的IP地址,将返回INADDR_NONE。 关于传入的参数: 传入参数为"a.b.c.d"格式时,inet_addr()会检查abcd每个字段是否>255,如果有>255的字段,则返回INADDR_NODE。 但当传入参数为"a.b.d"、“a.d”、"d"时,inet_addr()会把除d外,其余字段从前往后填入点分十

weixin_43973125的博客 1万+

深入Scrapy ItemLoader:打造优雅高效的Python爬虫数据清洗流水线

ItemLoader是 Scrapy 提供的声明式数据加载工具。它的核心理念是:将数据提取(从response中取原始值)和数据清洗/验证(处理空值、格式转换、默认值等)分离开。你可以把它想象成一个工厂流水线:原始零件(selector提取的文本)进入,经过一道道工序(输入处理器),组装成最终产品(Item字段)。首先在items.py中定义清晰的数据结构。使用搭配类型注释(虽然Scrapy自身不强制,但对人和IDE友好)。

2201_76125261的博客 68

杰理AC696N系列芯片外部中断使用教程

本教程详细介绍了杰理AC696N芯片的GPIO引脚中断唤醒功能实现方法。主要内容包括: 功能特点: 支持任意GPIO引脚配置为中断源 可灵活选择上升沿或下降沿触发 提供自定义中断回调函数接口 核心实现: 通过port_wkup_interrupt_init()函数配置GPIO属性 使用request_irq()注册中断服务程序 提供中断使能/关闭接口 注意事项: 此功能在低功耗模式下无效 需注意引脚冲突和中断优先级设置 建议在回调函数中实现简洁的逻辑 应用场景: 按键检测 外部信号监测 事件触发等 本方案提

qq_42014563的博客 944

C++中inet_pton、inet_ntop函数

头文件 windows下: #include <WS2tcpip.h> linux下: #include <sys/socket.h> #include <netinet/in.h> #include<arpa/inet.h> inet_pton函数 将点分十进制串转换成网络字节序二进制值,此函数对IPv4地址和IPv6地址都能处理。 第一个参数可...

Lei Gong's blog 2万+

Kong API Gateway 配置与深入

Kong是一个开源的、高性能的API网关,提供了一种简单易用的服务间路由、流量管理和安全防护方案,其最初起源于Nginx Inc.,但后迁移至Apache Software Foundation。Kong支持RESTful、GraphQL、TCP/UDP等协议,可与AWS Lambda、Azure Functions、Google Cloud Functions等云函数平台集成。其主要功能包括:服务发现与负载均衡、请求代理、身份认证与授权、缓存、日志记录、监控指标、灰度发布、多种插件等。

AI天才研究院 2284

inet_ntop()、inet_pton()、inet_addr()、inet_ntoa()函数之间的关系

- emmmmm,先看这张图来理解,知道这些函数的作用 1. inet_pton()源码 int inet_pton(int family, const char *strptr, void *addrptr) { if (family == AF_INET) { struct in_addr in_val; if (inet_aton(strptr, &in_v...

@matery 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

inet_ntop, inet_pton

Linux下inet_pton和inet_ntop这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换。而且,这2个函数能够处理ipv4和ipv6。算是比较新的函数了。   inet_pton函数原型如下[将“点分十进制” -> “整数”]   #include   #include   #include   int i

4759

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

inet_pton和inet_ntop函数

inet_pton和inet_ntop函数 文章目录inet_pton和inet_ntop函数inet_ptoninet_ntop例子参考 inet_pton和inet_ntop是两个新函数,它用来代替inet_aton、inet_addr和inet_ntoa函数。inet_pton和inet_ntop适用于IPv4和IPv6地址。 inet_pton #include <arpa/inet.h> int inet_pton(int af, const char *src, void *dst

ocfbnj的博客 1414

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

inet_pton和inet_ntop函数的使用

描述 int inet_pton(int af, const char *src, void *dst); This function converts the character string src into a network address structure in the af address family, then copies the network address structure to dst. The af argument must be either AF_IN...

技术成就梦想,梦想成就未来。If you try hard enough, it can be. 2297

inet_pton函数和inet_ntop函数的用法及简单实现

这两个函数是随IPv6出现的新函数,对于IPv4地址和IPv6地址都适用。函数名中的p和n非别代表表达(presentation)和数值(numeric)。地址的表达格式通常是ASCII字符串,数值格式则是存放到套接字地址结构中的二进制值。函数如下: #include int inet_pton(int family, const char *strptr, void *addrptr);

拥抱新技术,终身学习 3万+

网络编程之inet_pton,inet_ntop,sock_ntop函数

inet_pton         inet_pton函数转换由strptr指针所指的字符串,并通过addrptr指针存放二进制结果。若成功则为1,若输入不是有效的表达式格式则为0,若出错则为-1; int inet_pton(int family, const char* strptr, void* addrptr) { if (family == AF_INET) { st

雪儿的专栏 6576

inet_addr() inet_ntoa() inet_pton inet_ntop sockaddr_in

<br />inet_addr() 简述:将一个点间隔地址转换成一个in_addr。<br />#include <winsock.h><br />unsigned long PASCAL FAR inet_addr( const struct FAR* cp);<br />cp:一个以Internet标准“.”间隔的字符串。<br />注释:<br />本函数解释cp参数中的字符串,这个字符串用Internet的“.”间隔格式表示一个数字的Internet地址。返回值可用作Internet地址。所有In

zhdrfirst的专栏 6045

windows下inet_pton和inet_ntop

 code is copied from webrtc project, for possible reference. #include <stdio.h> #include <stdint.h> #pragma comment(lib,"ws2_32.lib") #include <winsock2.h> #include<Ws2tcpip.h>...

u010643777的专栏 1万+

inet_aton、inet_ntoa、inet_pton和inet_ntop

inet_aton、inet_ntoa、inet_pton和inet_ntop都是用于IP地址与大端网络字节序二进制数字相互转换的函数 不同的是inet_aton和inet_ntoa只支持ipv4类型的地址转换,而inet_pton和inet_ntop支持ipv4和ipv6类型的地址转换 inet_aton 头文件和函数原型 #include<sys/scoket.h> #include<netinet/in.h> #include<arpa/inet.h> int i

weixin_51281362的博客 3456

inet_pton函数 和inet_ntop函数

inet_pton函数:将点分十进制串转换成网络字节序二进制值,此函数对IPv4地址和IPv6地址都能处理。 int inet_pton(int family,const char * strptr,void * addrptr);  //返回:1---成功 0---输入不是有效的表达格式 -1---失败    第一个参数可以是AF_INET或AF_INET6:第二个参数是一个指向点分十进制

忘不烦的专栏 1万+

inet_pton()和inet_ntop()函数使用实例

概述 IP格式最常见的是使用点分10进制表示,如: xx.xx.xx.xx (IPV4地址)。 IP地址分为两类:IPv4地址和IPv6地址。 IPv4 地址用32位来表示; IPv6 地址用128位来表示; 由于二进制数太长,人们为了便于记忆和识别,就把每一段8位编为一组,每组之间用点号分开。然后将每个字节(八位组)转换为等值的十进制数,大小为0至255。 IP 地址分为A、B、C、D、E等 5 大类,由IP地址第一字节的几个最高位来定义和区分,简要如下表所示 inet_pton 函数原型 #in

lm_hao的专栏 3905
上一篇: getpwuid()详解
下一篇: strcpy、strncpy与memcpy strchr 和 strstr的区别与使用方法
JZR_HAO
博客等级 码龄15年 8粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值