【计算机网络】IP 地址处理函数

这篇具有很好参考价值的文章主要介绍了【计算机网络】IP 地址处理函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.struct sockaddr_in的结构

2.一般我们写的结构

3.常见的“点分十进制”  到  ” uint32_t 的转化接口

3.1. inet_aton  和  inet_ntoa (ipv4)

3.2.  inet_pton  和 inet_ntop (ipv4 和 ipv6)

3.3. inet_addr 和 inet_network

3.4. inet_addr 和 inet_network 和 inet_aton 区别




1.struct sockaddr_in的结构

【计算机网络】IP 地址处理函数

 

2.一般我们写的结构

一般我们在程序中用的点分十进制来表示 IP 是一个字符串。

  • std::string  IP = "127.0.0.1";
  • uing16_t  PORT = 8080;

最后在网络发送的时候都需要填入到 sockaddr_in 结构体中。

3.常见的“点分十进制”  到  ” uint32_t 的转化接口

inet_aton、inet_ntoa、inet_pton和inet_ntop都是用于IP地址(点分十进制)与大端网络字节序二进制数字相互转换的函数

不同的是inet_aton和inet_ntoa只支持ipv4类型的地址转换,而inet_pton和inet_ntop支持ipv4和ipv6类型的地址转换

3.1. inet_aton  和  inet_ntoa (ipv4)

函数原型:文章来源地址https://www.toymoban.com/news/detail-475458.html

#include<sys/scoket.h>
#include<netinet/in.h>
#include<arpa/inet.h>


int inet_aton(const char *cp, struct in_addr *inp);
//说明
用来将参数cp所指的ipv4点分十进制网络地址字符串转换成网络使用的大端字节序二进制数字,
然后存于参数inp所指的in_addr结构中。
成功则返回非0值,失败则返回0。
//struct in_addr定义为:
struct in_addr
{
  unsigned long int s_addr;//32位的unsigned int 类型
};


char *inet_ntoa(struct in_addr in);
//说明
用来将参数in所指的大端网络字节序二进制的数字转换成ipv4点分十进制字符串网络地址
然后将指向此网络地址字符串的指针返回。
成功则返回字符串指针,失败则返回NULL。

3.2.  inet_pton  和 inet_ntop (ipv4 和 ipv6)

#include <sys/socket.h>
#include <netinet/in.h>
#include<arpa/inet.h>

int inet_pton(int af, const char *src, void *dst);
//说明
用来将ipv4或者ipv6类型的ip地址(点分十进制)字符串转换为大端网络字节序二进制数字,
第一个参数af是地址簇,取值为AF_INET(表示ipv4使用的地址簇)和AF_INET6(表示ipv6使用的地址簇),
第二个参数src是来源地址,(ip点分十进制字符串)
第三个参数 dst接收转换后的数据。(大端网络字节序二进制数字)



const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);
说明:
将大端网络字节序二进制数转换为ipv4或者ipv6类型的字符串,
第一个参数af是地址簇,取值为AF_INET(表示ipv4使用的地址簇)和AF_INET6(表示ipv6使用的地址簇)
第二个参数src为32位的IP地址。(大端网络字节序二进制数字)
第三个参数dst指向存放转化字符串的缓冲区。
第四个参数cnt他是所指向缓存区dst的大小

3.3. inet_addr 和 inet_network

in_addr_t inet_addr(const char *cp);

in_addr_t inet_network(const char *cp);

这个接口很简单就是把  点分IP  转化为  网络IP  以返回值的形式返回。

但是
inet_addr 返回的网络IP 是网络字节序(大端)
inet_network返回的网络IP  是主机字节序(未知大小端)

3.4. inet_addr 和 inet_network 和 inet_aton 区别


三者的作用:
     都是将点分IP转换为二进制IP。 
三者原型:
    int inet_aton(const char *cp, struct in_addr *inp);
    in_addr_t inet_addr(const char *cp);
    in_addr_t inet_network(const char *cp);
头文件:
    #include <sys/socket.h>
    #include <netinet/in.h> 
    #include <arpa/inet.h>  
区别:
    inet_aton计算出来的是网络字节序的二进制IP
    inet_network计算出来的是主机字节序的二进制IP
    inet_addr计算出来的是网络字节序的二进制IP

    那inet_aton和inet_addr有什么区别呢?
    inet_addr不支持255.255.255.255,inet_aton支持255.255.255.255 

到了这里,关于【计算机网络】IP 地址处理函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IP地址的分配(计算机网络)

    目录 一、IP地址的分配 二、IP地址分配举例 三、划分CIDR地址块 将142.150.64.0/24划分为3个CIDR地址块,其中一个地址块的大小是另外两个地址块大小之和,请给出每个地址块的CIDR记法、对应的掩码及地址范围。 1、IP地址现在由因特网名字与号码分配机构 (Internet Corporation for

    2024年02月12日
    浏览(30)
  • 计算机网络相关-ip地址,子网掩码与网络地址,广播地址

    计算机网络基础(进制转换和IP地址详解)_ip地址进制转换方法_码海小虾米_的博客-CSDN博客 总的来说,ip地址用点隔开,用4个0-255之间的十进制数表示,如192.168.65.98 有这样的题:告诉你ip地址和子网掩码位数,求网络地址和广播地址。 一般给出的信息是这样的:192.168.65.98

    2024年02月07日
    浏览(43)
  • 计算机网络——主机IP地址、子网掩码、广播地址、网络数、主机数计算方法

    目录 一、概念 1.1 主机IP地址 1.2 子网掩码 1.3 广播地址 1.4 子网划分 二、计算 2.1 已知IP地址和子网掩码,计算网络地址和主机地址: 2.2 已知IP地址和子网掩码,计算广播地址: 2.3 已知子网掩码,计算主机数: 2.4 已知子网掩码,计算会产生多少个子网: 2.5 已知子网掩码,

    2023年04月24日
    浏览(32)
  • 计算机网络—IP地址及其表示方法

    IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。 IP地址的编址方法共经历了三个历史阶段:分类的IP地址、子网的划分、超网的构成 所谓“分类的IP地址”就是将IP地址划分为若干个固定类,每一类地址都由两个

    2024年02月07日
    浏览(37)
  • 计算机网络:MAC地址 & IP地址 & ARP协议

    如果两台主机通过一条链路通信,它们不需要使用地址就可以通信,因为连接在信道上的主机只有他们两个。换句话说, 使用点对点信道的数据链路层不需要使用地址 。 再来看使用共享信道的总线型局域网: 总线上的某台主机要给另一台主机发送帧,表示帧的信号通过总线

    2024年04月17日
    浏览(40)
  • 计算机网络之MAC和IP地址

    在局域网中,硬件地址,又称为物理地址或MAC地址。 目前现在的局域网中实际上使用的都是6字节的MAC地址,所以每一个以太网设备都具有唯一的MAC地址。 MAC地址的格式 假设传输使用的是IP数据,V2的MAC帧较为简单,由五个字段组成,前面的两个字段分别为6字节的目的地址和

    2024年02月13日
    浏览(29)
  • 计算机网络 ARP协议 IP地址简述

     ARP只能在一个链路或一段网络上使用    

    2024年02月13日
    浏览(35)
  • 计算机网络 ,ip地址(网络号,主机号),网关,路由

    1、ip:用来唯一标识互联网中的一个网络或一台主机。 2、网络号:ip地址包含了网络号(与子网掩码相与),主机号,主机可以与具有相同的网络号的设备直接通讯,在没有连接设备的情况下,即使共享相同的物理网段,网络号不同则无法进行通讯。 3、主机号:网络号标识在

    2023年04月27日
    浏览(41)
  • 计算机网络实验二 ARP协议以及IP地址和MAC地址关系

    1.掌握ARP协议常用命令; 2.掌握ARP协议的工作过程; 3.掌握IP地址和MAC地址的关系; 1.掌握ARP协议常用命令。 2.掌握ARP协议的工作过程; (1)学习:视频学习Cisco Packet Tracer中的集线器和交换机的区别 (2)配置一个包括两个网络的互联网(可参照下图1),并将IP地址和MAC地址相应信

    2024年02月05日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包