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

学校网站建设开发方案书网站全面推广方案

学校网站建设开发方案书,网站全面推广方案,建设招标网官方网站电脑版,橙色的网站文章目录 前言核心知识关于 小端法关于 大端法网络字节序的转换 函数 前言 在进行 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/736786/

相关文章:

  • 找北京赛车网站开发南通网站建设哪家好
  • 淘宝做海淘产品 网站折扣变化快广州企业网站seo
  • 做慕课的网站dnf怎么做提卡网站
  • 个人网站建设书wordpress教程全集(入门到精通)
  • vs做网站如何放背景图教做甜品网站
  • 家庭电脑做网站帮做论文网站吗
  • 如何用 ftp上传网站设计师投稿网站
  • 网站能为智慧城市建设作出什么贡献不买域名怎么做网站
  • 网站后台示演网站怎么绑定域名
  • 阳山做网站海南澄迈网站建设
  • 单位网站用途类型万户做网站好不好
  • 老榕树网站建设教学湖北定制型网站建设
  • 软通动力外包值得去吗长沙seo技术培训
  • 九亭做网站公司企业官方网站开发外包
  • 新网站如何做免费推广江苏省交通运输厅门户网站建设管理办法
  • 邹城住房城乡建设部网站下页
  • 博物馆网站建设目的网站建设报价新鸿儒
  • 买卖信息网站wordpress自动保存图片
  • 网站怎么搜网站建设平台合同模板下载
  • 环艺做网站牛商网网站建设
  • 做网站的人会留下啥漏洞吗网站排名站长之家
  • 郑州服务设计公司网站云主机 网站吗
  • 淄博瓷砖网站建设中企动力机床网站建设
  • 网站后期维护工作包括哪些有哪些可以做网站的平台
  • 中国建设交易信息网站北京计算机编程培训学校
  • 德宏做网站做房产中介搜房源的网站
  • 企业网站建设首页要写什么内容黄骅吧招聘信息
  • 江西手机版建站系统信息lnmp 内网 wordpress
  • 中级网站开发工程师 试题企业网页设计多少钱
  • 怎么做类似淘宝的网站WordPress安装主题都不行