字节序转换函数htons、htonl

地址转换函数inet_ntoa、inet_ntop、inet_pton、inet_addr

1.字节序转换函数

#include <arpa/inet.h>
// 将 32位主机字节序数据转换成网络字节序数据
//(h:host, n:net,l:long)
uint32_t htonl(uint32_t hostint32);
// 将 16 位主机字节序数据转换成网络字节序数据
uint16_t htons(uint16_t hostint16);
// 将 32 位网络字节序数据转换成主机字节序数据
uint32_t ntohl(uint32_t netint32);
// 将 16 位网络字节序数据转换成主机字节序数据
uint16_t ntohs(uint16_t netint16);

htons是将整型变量从主机字节顺序转变成网络字节顺序, 就是整数在地址空间存储方式变为高位字节存放在内存的低地址处。
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释,网络字节顺序采用big-endian排序方式。
htons的功能:将一个无符号短整型的主机数值转换为网络字节顺序,即大尾顺序(big-endian)

htonl,其实是host to network, l 的意思是返回类型是long. 将主机数转换成无符号长整型的网络字节顺序。本函数将一个32位数从主机字节顺序转换成网络字节顺序。

2.地址转换函数

【inet_ntoa()】是编程语言,功能是将网络地址转换成“.”点隔的字符串格式。
函数声明:char *inet_ntoa(struct in_addr in);
将一个32位网络字节序的二进制IP地址转换成相应的点分十进制的IP地址(返回点分十进制的字符串在静态内存中的指针)。
【点分十进制】(Dotted Decimal Notation)全称为点分(点式)十进制表示法,是IPv4的IP地址标识方法。IPv4中用四个字节表示一个IP地址,每个字节按照十进制表示为0~255。
点分十进制就是用4个从0~255的数字,来表示一个IP地址。如192.168.1.1。

inet_ntoa 将 十进制网络字节序 转换为 点分十进制IP格式的字符串。
inet_pton 是一个IP地址转换函数,将 点分十进制的IP地址 转换为 二进制网络字节序 的IP地址。
inet_ntop 是一个IP地址转换函数,将 二进制网络字节序的IP地址 转换为 点分十进制的IP地址。
inet_addr 函数可以把 点分十进制的IP地址字符串 转化为 二进制网络字节序 的IP地址,如inet_addr("192.168.1.166")
inet_addr 是一个计算机函数,功能是将一个点分十进制的IP转换成一个长整数型数(u_long类型)等同于inet_addr()
inet_addr 函数可以转化字符串,主要用来将一个十进制的数转化为二进制的数,用途多于ipv4的IP转化。
返回:若字符串有效则将字符串转换为32位二进制网络字节序的IPV4地址,否则为INADDR_NONE

【Socket网络编程】3.字节序转换函数htons、htonl ,地址转换函数inet_ntoa、inet_ntop、inet_pton、inet_addr相关推荐

  1. 网络编程之 字节序和深入理解bind()函数

    在上一篇博客里,大家也许会对htons()感到疑惑吧,其实就是字节序的转换,所以这篇博客我们就来详细的解释一下什么是字节序. 也就是让大家对 bind函数有更加深刻而性感的认识 计算机是小端字节序,网 ...

  2. python3 网络编程 主机字节序 网络字节序 相互转换

    编写底层低层网络应用时,或许需要处理通过电缆在两台设备之间传送的低层数据.在这种操作中,需要把主机操作系统发出的数据转换成网络格式,或者做逆向转换,因为这两种数据的表示方式不一样. 1. 代码 # 主 ...

  3. linux网络编程之字节序

    进程间通信 特点:依赖于内核,造成缺陷--无法实现多机通信. 网络编程 地址:由IP地址和端口号构成,端口号用来判断客户端接入哪个服务器. 数据的交流:涉及到协议(http,tcp,udp),其实就是 ...

  4. 【Socket网络编程】12. send()、recv()、sendto() 和 recvfrom() 函数解析

    send().recv().sendto()和recvfrom()函数解析 一般情况下,send().recv()在TCP协议下使用,sendto().recvfrom()在UDP协议下使用,也可以在 ...

  5. Socket通信之操作系统的字节序和位数

    关于Socket通信过程中字节序 在网络编程里,网络字节序是big-endian的,而大部分的PC的系统都是X86处理器系列,X86采用的是little-endian,所以需要将网络数据流转换成本地数 ...

  6. Windows/Linux TCP Socket网络编程简介及测试代码

    典型的网络应用是由一对程序(即客户程序和服务器程序)组成的,它们位于两个不同的端系统中.当运行这两个程序时,创建了一个客户进程和一个服务器进程,同时它们通过从套接字(socket)读出和写入数据在彼此 ...

  7. socket网络编程——套接字地址结构

    声明:此博客是本人根据老师课件总结的,如有抄袭行为,本人会即刻删除. 1.主机字节序列和网络字节序列 主机字节序列分为大端字节序和小端字节序,不同的主机采用的字节序列可能不同.大端字节序是指一个整数的 ...

  8. MFC socket网络编程(流程示例)

    MFC socket网络编程(流程示例) 1.TCP流式套接字的编程步骤 在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK! 服务器端程序: 1.加 ...

  9. 1.socket网络编程

    socket网络编程总结(Linux+Windows) 理解为:套接字通信,网络通信 1.概念 1.1 局域网和广域网 局域网:局域网将一定区域内的各种计算机.外部设备和数据库连接起来形成计算机通信的 ...

最新文章

  1. 给你一个亿的keys,Redis如何统计?
  2. ubuntu18.04上安装ffmpeg
  3. Spring Boot 集成 Activiti
  4. c 批量导入mysql数据库_C#.NET中如何批量插入大量数据到数据库中
  5. 如果你的名字,当然【随机】给你
  6. 小姐姐教我的 sklearn 逻辑回归
  7. linux卸载git,并且安装新版本git
  8. Kinect开发笔记之七Visual Studio结合C#调控Kinect俯仰角度
  9. php如何设计自定义模型,php – Kohana ORM模型中的自定义方法
  10. php mvc 实现,php mvc的简单实现
  11. mysql允许远程访问的用户
  12. 文本检测与识别(OCR)资源汇总(持续更新)
  13. 1、STVD和STVP的使用及串口烧写程序教程
  14. 【c/c++】二次方程计算器
  15. java版我的世界怎么疾跑,我的世界怎么疾跑?疾跑快捷键介绍
  16. 商品交易系统产品介绍
  17. 高新技术企业认定的好处!
  18. NHibernate配置详解
  19. 爬虫系列-雪球网选股策略爬取程序1.0
  20. 【扫盲】机器学习中模型的容量、表示容量、有效容量

热门文章

  1. 日常python常见问题
  2. cachecloud:Redis云管理平台
  3. java RSA加密解密--转载
  4. 探索 Linux 内存模型--转
  5. 十分钟教你开发EOS智能合约
  6. TalkingData CTO肖文峰:研发工程师,你为啥升不上去?
  7. Java 8 - CompletableFuture组合式异步编程
  8. Java - String源码解析及常见面试问题
  9. Tomcat - Tomcat 8.5.55 启动过程源码分析阶段三_start阶段
  10. Linux启动多个Oracle实例