当前位置: 首页 > news >正文

百度小说排行榜2020绵阳网站推广优化

百度小说排行榜2020,绵阳网站推广优化,重庆建设工程安全信息管理网,招标网官网入口文章目录 前言核心知识关于 小端法关于 大端法网络字节序的转换 函数 前言 在进行 socket 网络编程时,会用到字节流的转换函数、例如 inet_pton、htons 等,那么为什么要用到这些函数呢,本篇主要就是对这部分进行介绍。 核心知识 重点需要记…

文章目录

    • 前言
    • 核心知识
    • 关于 小端法
    • 关于 大端法
    • 网络字节序的转换 函数

前言

在进行 socket 网络编程时,会用到字节流的转换函数、例如 inet_pton、htons 等,那么为什么要用到这些函数呢,本篇主要就是对这部分进行介绍。

核心知识

重点需要记住的就是以下三点:
① 本地的数据和网络的数据,其排列方式是有区别的。本地数据存储 采用的是 “小端法”,网络数据流 采用的是 “大端法” 。(这就会导致 本地字节序 和 网络字节序 之间需要做转换)

② 记住两个 IP 地址转换函数
inet_pton(): 该函数用于将点分十进制字符串形式的IP地址,转换为网络字节序的二进制形式IP地址。通常在需要从用户输入的IP地址解析为网络字节序形式时使用。

inet_ntop(): 该函数用于将网络字节序的二进制形式IP地址,转换为点分十进制字符串形式的IP地址。通常在需要将IP地址转换为可读性更好的形式(如日志输出)时使用。

记住二者使用场景:
例如,在接收到来自客户端的连接请求时,通常会使用 inet_ntop() 将客户端的IP地址转换为可读性更好的字符串格式进行显示或记录。而在需要把用户输入的IP地址转换为网络字节序进行套接字地址填充时,则会使用 inet_pton()。

③ 记住几个能完成 网路字节序 和 主机字节序 转换的库函数
在这里插入图片描述
注意,以上四个函数是进行整数之间的转换。

h 表示 host,n:network,l:32 位长整型,s:16 位短整型。

例如 htonl,用于将 32位主机字节序 的整数转换为 网络字节序 (大端字节序)表示。(结合 INADDR_ANY 参数可用于 IP 转换)。

例如 htons,用于将 16位主机字节序 的整数转换为 网络字节序 (大端字节序)表示。(结合 SERV_PORT 参数可用于 端口 转换)。

以上的 转换函数 为什么只提到了 IP 和 端口 的转换呢?
因为 IP 地址 + 端口号,可以在网络环境中,唯一标识一个进程。

关于 小端法

本地数据流,高位存高地址。低位存低地址。 int a = 0x12345678
在这里插入图片描述

关于 大端法

网络数据流, 高位存低地址。低位存高地址。int a = 0x12345678
在这里插入图片描述
本地存储的数据 和 网络字节序 的存储方式不一致,这会导致在进行 socket 网络通信时,需要做字节序的转换。

为什么不采用一致的存储方案,而是分成 大端法 和 小端法,这涉及到历史原因。

网络字节序的转换 函数

可以调用以下库函数做 网络字节序主机字节序 的转换。
在这里插入图片描述
h 表示 host,n:network,l:32 位长整型,s:16 位短整型。

例如 htonl,用于将 32位主机字节序 的整数转换为 网络字节序 (大端字节序)表示。(结合 INADDR_ANY 参数可用于 IP 转换)。

例如 htons,用于将 16位主机字节序 的整数转换为 网络字节序 (大端字节序)表示。(结合 SERV_PORT 参数可用于 端口 转换)。

#include <arpa/inet.h>

int inet_pton(int af, const char *src, void *dst); 本地字节序(string IP) —> 网络字节序

		af:AF_INET、AF_INET6src:传入,IP地址(点分十进制)dst:传出,转换后的 网络字节序的 IP地址。 返回值:成功: 1异常: 0, 说明src指向的不是一个有效的ip地址。失败:-1

const char * inet_ntop(int af, const void *src, char *dst, socklen_t size); 网络字节序 —> 本地字节序(string IP)

		af:AF_INET、AF_INET6src: 网络字节序IP地址dst:本地字节序(string IP)size: dst 的大小。返回值: 成功:dst。 	失败:NULL

提问:
htonl 函数也能将本地字节序转换成网络字节序。那么,htonl 函数 和 inet_pton 函数有什么区别呢

解答:
htonl() 和 inet_pton() 这两个函数在功能上是不同的:

htonl(): 该函数用于将32位主机字节序的整数转换为网络字节序(大端字节序)表示。它通常用于处理整数类型数据的字节序转换。

inet_pton(): 该函数用于将点分十进制字符串形式的IP地址转换为二进制格式的网络字节序IP地址。它将一个IP地址从人类可读的字符串格式转换为计算机网络设备能够理解的二进制格式。

总结来说,
htonl() 用于 整数类型数据 的 字节序 转换。
inet_pton() 用于 IP地址(字符串) 表示形式和 网络字节序 之间的转换。

http://www.yayakq.cn/news/381079/

相关文章:

  • 网站开发劣势家教
  • 网站里的搜索怎么做的做网站的如何开发业务
  • 网站突然没有收录wordpress微信机器人下载地址
  • 外贸网站推广方案可以商用的电视app永久软件
  • 做网站记者的出路是什么国家防疫政策最新调整
  • 南京做网站的公司有哪些常州网站建设找思创
  • 上海网站推广排名网站开发于制作总结
  • 沧州网站建设的公司用dw做网站首页
  • h5网站源代码网站花瓣飘落的效果怎么做
  • 弘泽建设集团网站深圳seo优化排名公司
  • 泊头做网站电话适合穷人开的小店
  • 网站做百度推广有没有效果雪白丰腴做美妇网站
  • 上海网站制作技术邢台推广网站建设电话
  • 招聘网站怎么做才能吸引人wordpress关闭插件
  • 大型门户网站建设需要哪些技术和注意事项永兴集团网站
  • 建设银行手机行网站网站建设中请稍后再访问
  • wordpress主题创建目录优化产业结构
  • 做房地产咨询网站怎么赢利建设银行教育网站
  • 做软件工资高还是网站wordpress换域名后
  • 做空间的网站织梦pt官网
  • c2c电子商务网站策划网站栏目设置说明
  • 建设一个跟京东一样的网站中国外贸网
  • 全国的p2p网站建设wordpress 自定义字段 调用
  • vm虚拟化建设网站上海网站建设定制开发
  • 哪个建设网站好制作logo设计
  • wordpress两个站合并万网域名续费查询
  • 当前网站开发什么语言右面是某网站建设立项需求
  • 江苏建站速度忿花店网页制作素材
  • 免费个人网站域名注册公益404 wordpress
  • 有服务器和域名怎么做网站网站建设综合训练的实验目的