TCP/IP 第3章 地址族与数据序列

Ubuntu系统下搭建QtCreator开发环境详细过程(Qt简介;Linux下安装QtCreator;Ubuntu安装后闪退蓝屏的解决方法) Qt 是一个跨平台的 C++开发库。主要用来开发图形用户界面 (Graphical User Interface,简称 GUI) 程序。Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix、智能手机系统Android、ios、WinPhone, 嵌入式系统 QNX、VxWorks 等。 阅读详情

3.1 分配给套接字的IP地址与端口号

IP是Internet Protocol(网络协议)的简写,是为收发网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的序号。

网络地址:A类:0-127、B类128-191、C类192-223。通过套接字收发数据时,数据传到网络后即可找到正确的主机。

端口号:端口号就是在同一操作系统内为区分不同套接字而设置的,因此无法将1个端口号分配给不同套接字。另外,套接字由16位构成,可分配的端口号范围是0-65535,0-1023是知名端口,一般分配给特定应用程序,所以应当分配此范围之外的值。

TCP套接字和UDP套接字不会共用端口号,所以允许重复。

3.2 地址信息的表示

应用程序中使用的IP地址和端口号以结构体的形式给出了定义。

struct sockaddr_in
{
	sa_family_t			sin_family;//地址族
	uint16_t			sin_port;//16位TCP/UDP端口号
	struct in_addr		        sin_addr;//32位IP地址
	char				sin_zero[8];//不使用
};

struct in_addr
{
	in_addr_t			s_addr;//32位IPv4地址
}

 

3.3 网络字节序与地址变换

不同CPU中,4字节整数型1在内存空间的保存方式是不同的。

                                      低---高

大端:00000000 00000000 00000000 00000001

小端:00000001 00000000 00000000 00000000

大端序:高位字节存放到地位地址

小端序:高位字节存放到高位地址

网络字节序统一为大端序。

unsigned short htons(unsigned short);//2字节 host to network-----转化端口
unsigned short ntohs(unsigned short);//2字节 network to host
unsigned long htonl(unsigned long);//4字节-----转化IP地址
unsigned long ntohl(unsigned long);//4字节

3.4 网络地址的初始化与分配

#include <arpa/inet.h>

in_addr_t    inet_addr(const char * string);

//把ip点分十进制表示法转化为32为整数型
//失败返回INADDR_NONE

转化后的整数型值满足网络字节序。

int inet_aton(const char * string, struct in_addr * addr);

//成功返回1,失败返回0

实例: 

#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>

int main()
{
	char *addr="172.21.2.248";
	struct sockaddr_in addr_inet;
	if(!inet_aton(addr, &addr_inet.sin_addr)){
		//error
	}else{
		printf("Newwork ordered integer addr:%#x \n",addr_inet.sin_addr);
	}
	return 0;

}

利用常数INADDR_ANY分配服务器端的IP地址,可以自动获取服务器端的计算机IP地址。

服务器端常见的套接字初始化过程:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>

int main()
{
	int serv_sock;
	struct sockaddr_in serv_addr;
	char *serv_port = "9190";

	/*创建服务器端套接字 */
	serv_sock = socket(PF_INET, SOCK_STREAM, 0);

	/*地址信息初始化*/
	memset(&serv_addr,0,sizeof serv_addr);
	serv_addr.sin_family = AF_INET;
	serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
	serv_addr.sin_port = htons(atoi(serv_port));//atoi()------ascii to integer

	/*分配地址信息*/
	bind(serv_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

}

 

【本地部署实战】LM Studio深度使用指南:从环境搭建到模型调优 LM Studio通过极简的操作流程和强大的生态兼容性,让本地部署大模型成为可能。随着M4芯片的发布和CUDA 12.0的优化,未来本地化AI开发将迎来新的爆发点。建议开发者关注官方Discord社区(https://discord.gg/lmstudio)获取最新模型支持信息。 阅读详情

相关推荐

【数字电源/MATLAB+PLECS】如何进行 Buck 数字电源仿真(二)PLECS 搭建开环 Buck 功率级

本文介绍了如何在PLECS中搭建开环Buck功率级模型,验证数字电源设计的基本思路。重点内容包括: 明确开发顺序:先开环验证功率级,再闭环设计控制器 搭建关键组件:输入电源、PWM模块、MOSFET开关、续流二极管、LC滤波电路及负载 设置初始参数:24V输入、12V输出、200kHz开关频率、22μH电感、100μF电容 测量关键波形:MOSFET Vds验证开关动作、电感电流纹波和输出电压稳态值 提供完整仿真模型和GitHub资源,便于读者复现验证 文章强调通过开环测试先确保功率级正确性,为后续闭环控制

weixin_43234123的博客 1218

第三章 地址族与数据序列

《TCP/IP网络编程》 尹圣雨 P36~P45 1分配给套接字的IP地址与端口号 IP是为收发网络数据而分配给计算机的值。端口号是为区分程序中创建的套接字而分配给套接字的序号。 IP地址分为2类:IPv4和IPv6,主要差别是表示IP地址所用的字节数。IPv4标准的4字节IP地址分为网络地址和主机地址,分为ABCDE类型、   网络地址(网络ID)是为区分网络而设置的一部分I

王小东大将军的博客 389

system_stm32f10x.c文件分析

配置系统时钟(包括系统时钟源、锁相环(PLL)倍频系数、高级高性能总线(AHB)/ 高级外设总线(APBx)预分频器以及闪存相关设置)。该函数在系统复位后的启动阶段被调用,且调用时机早于跳转到主程序之前。

Jia shuheng的博客 599

unsigned long整型数字转化成IP地址的实现

做过网络通信的人都用过

u011260008的专栏 1855

codesys【modbusRTU】主站

【代码】modbusRTU【codesys】

cfqq1989的博客 4370

51单片机计算器(源程序+流程图+答辩报告+综合设计)

保姆级讲解!C语言编程,使用51单片机及LCD1602显示屏实现!

m0_57007304的博客 2万+

IS-IS路由协议地址详解

IS-IS路由net地址组成:区域号+系统号+NSEL构成 Net 49.0001.1921.6801.0001.00 Net地址通常有以下几部分组成AFI DSP(HODSP) 系统ID NSEL ①AFI 机构和格式标识符也被称为地址家族标识符,这是第一个字节,指出了负责分配地址及制定地址格式的机构。这个字节通常为39(国别码)、47(国际编码)、49(私有)。 ②...

weixin_33922672的博客 1660

落地实战!Python构建地方政府公开数据爬虫:政策/数据/规划全维度抓取(附反爬适配+数据清洗)

政务公开数据爬虫的核心不是“技术多先进”,而是“适配政务网站的特性”——慢一点、稳一点、合规一点,比追求抓取速度更重要。多地市爬虫集群:通过配置文件管理不同地市的URL规则,实现全省/全国政务数据抓取;图片表格识别:结合OCR工具(如pytesseract)识别政务网站的图片表格,转换为结构化数据;数据可视化:将抓取的统计数据导入PowerBI/Matplotlib,实现区域发展趋势分析。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1797

函数inet_addr和inet_aton

inet_addr 将"数字+句点"的格式的IP地址转换到unsigned long中,返回值已经是按照网络字节顺序的 相反inet_ntoa把类型为struct in_addr的数据转化为"数字+句点"的形式的字符串 typedef u_int32_t in_addr_t;

security134的专栏 9968

YOLO11全网首发:CVPR2026 Transformer注意力 | BinaryAttention 1-bit注意力,推理提速100%,超越FlashAttention2

本文改进:BinaryAttention 结合YOLO11的C3k2模块,全网首发创新。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 851

【四足机器人项目实战】四足机器人嵌入式硬件设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、电源管理板设计及制作二、通讯中继板设计及制作三、力控无刷电机驱动板设计及制作1.磁场定向控制FOC控制原理2.电机转子位置、速度检测原理3.硬件CAN通讯原理 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人–嵌入式硬件设计做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、电

qq_35635374的博客 1万+

《TCP/IP网络编程》第3章 地址族与数据序列

《TCP/IP网络编程》第3章IP与Port网络地址(Internet Address) IP与Port Internet Protocol(网络协议) 网络地址(Internet Address) IPv4(Internet Protocol version 4),4字节地址族 IPv6(Internet Protocol version 6),16字节地址族 IPv4的4字节地址分为网络地址和主机(计算机)地址。 ...

yxqq378287007的博客 664

AD(十四)调用已有的PCB元件封装库

软件:Altium Designer 16 需要资料:已有的PCB原理图文件(.PCBDOC)或者PCB库文件(.PCBLIB)(来源文中细说) 调用已有的PCB元件封装库(一)从已有的PCB原理图文件(*.PCBDOC)中调用1、PCB原理图文件来源2、打开已有的PCB原理图文件(*.PCBDOC)3、生成PCB封装库4、复制封装到工程文件下的PCB库文件(*.PCBLIB)5、重名问题(二)从已有的PCB库文件(*.PCBLIB)中调用1、PCB库文件(*.PCBLIB)的来源2、打开已有的PCB库 (

Curnane0_0的博客 5082

TCP/IP网络编程_第3章地址族与数据序列 3.1-3.3

TCP/IP网络编程_第3章地址族与数据序列 第2章中讨论了套接字的创建方法, 如果把套接字比喻为电话, 那么目前只安装了电话机. 本章将着重讲解给电话机分配号码的方法. 即给套接字分配 IP 地址和端口号. 这部分内容也相对有些枯燥, 但并不难, 而且是学习后续那些有趣内容必备的基础知识. 3.1 分配给套机字的 IP 地址 与 端口号 IP 是Internet Protocol (网络协议) 的简写, 是为收发网络数据而分配给计算机的值. 端口号并非赋予计算机的值, 而是为区分程序中创建的套机字而分配给

weifc-wei 的博客 451

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

TCP/IP网络编程_第3章地址族与数据序列 3.4-3.6

3.4 网络地址的初始化与分配 前面已讨论过网络字节序, 接下来介绍以bind函数为代表的结构体的应用. 将字符串信息转换为网络字节序的整型数 sockaddr_in 中保存地址信息的成员为32位整数型. 因此, 为了分配IP 地址, 需要将其表示为 32 位整数型数据. 这对于只熟悉字符串信息的我们来说实非易事. 各位可以尝试将 IP 地址 201.211.214.36 转换为4字节整数型数据. 对于IP 地址的表示, 我们熟悉的是分十进制表示法(Dotted Decimal Notation), 而非整

weifc-wei 的博客 581

jre9下载 jdk9

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

TCP/IP网络编程——地址族与数据序列

TCP/IP网络编程(3)——地址族与数据序列

u011895157的博客 926

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列

本章中,我们深入探讨了 TCP/IP 编程中的地址族与数据序列的基础知识。通过代码示例展示了如何使用AF_INET和AF_INET6表示不同的 IP 地址族,以及如何使用htonshtonl等函数进行字节序转换。最后,我们还展示了一个简单的 UDP 客户端,帮助大家理解实际应用中地址族与字节序的使用。希望这些内容能够帮助您在学习 TCP/IP 网络编程时打下坚实的基础!

小蜗牛的珍贵百宝箱 1169

TCP/IP网络编程:P3->地址族与数据序列

本系列文章为《TCP/IP网络编程----尹圣雨》学习笔记,前面的系列文章链接如下 TCP/IP网络编程:P1->理解网络编程和套接字 TCP/IP网络编程:P2->套接字类型与协议设置 文章目录 前言 一、分配给套接字的IP地址与端口号 1.1 网络地址(Internet Address) 1.2 网络地址分类与主机地址边界 1.3 用于区分套接字的端口号 二、地址信息的表示 2.1 表示IPv4地址的结构体 2.2 结构体sockaddr_in的成员分析 三、网络字节序与地址变换 3.1 字节序(Or

InnerPeaceHQ的博客 1292

03-地址族与数据序列

参考书籍:《TCP/IP》网络编程,作者【韩】尹圣雨 测试环境:Ubuntu 10.10 GCC版本:4.4.5 一、网络地址 IP地址分为两大类: IPv4 4字节地址族 IPv6 16字节地址族 IPv4标准的4字节IP地址分为网络地址和主机地址,且分为A、B、C、D、E等。如图: 二、网络地址分类与主机地址边界 一般可以通过IP地址第一个字节...

第一大剑豪——索隆 335

TCP/IP网络编程之地址族与数据序列

https://www.cnblogs.com/beiluowuzheng/p/9613293.html 分配IP地址和端口号 IP是Internet Protocol(网络协议)的简写,是为收发网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的序号 网络地址(Internet Address) 为使计算机连接到网络并收发数据,必须向其分配I...

书山有路勤为径 664

地址族与数据序列

地址族与数据序列 分配给套接字的IP地址与端口号 IP 为了接发网络数据而分配给计算机的值 IP地址分为IPv6和IPv4地址,我们主要以IPv4为例。 端口号 为了区分程序中创建的套接字而分配给套接字的序号 一、地址信息的表示 回顾我们之前讲的bind函数 #include<sys/socket.h> int bind(int sockfd,struct sockaddr* myaddr,socklen_t addrlen); //bind函数的作用在于将套接字和IP+端口

Mark_404的博客 201

《TCP/IP网络编程》第 3 章 网络地址的初始化与分配 笔记

第 3 章 地址族与数据序列 本章代码,在TCP-IP-NetworkNote中可以找到。 把套接字比喻成电话,那么目前只安装了电话机,本章讲解给电话机分配号码的方法,即给套接字分配 IP 地址和端口号。 3.1 分配给套接字的 IP 地址与端口号 IP 是 Internet Protocol(网络协议)的简写,是为手法网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为了区分程序中创建的...

riba2534的博客 1796

TCP/IP网络编程 第三章 地址族与数据序列

《TCP/IP网络编程》 第三章小结

weixin_44133930的博客 709

TCP/IP 网络编程笔记 第三章 地址族与数据序列

IP 是 Internet Protocol(网络协议)的简写,是为手法网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为了区分程序中创建的套接字而分配给套接字的端口号。为使计算机连接到网络并收发数据,必须为其分配 IP 地址。IP 地址分为两类。两者之间的主要差别是 IP 地址所用的字节数,目前通用的是 IPV4 , IPV6 的普及还需要时间。IPV4 标准的 4 字节 IP 地址分为网络地址和主机(指计算机)地址,且分为 A、B、C、D、E 等类型。数据传输过程:某主机向 203.211.1

哇咔咔的博客 808

《TCP/IP网络编程》(第三章)地址族和数据序列

是计算机为了区分程序中创建的不同套接字,而分配给套接字的序号,由16位组成,端口号唯一,可配分的范围在0~ 65535,其中0~10223是知名端口,一般分配给特定应用程序,所以应当分配范围之外的值。例如,如果一个IP地址的首字节是192(二进制为11000000),我们立即知道这是一个C类地址,网络ID占用3个字节,主机ID占用1个字节.0x1234567中,0x12是最高位字节,0x67是最低位字节,大端序中先保存最高位。返回的字符串是一个指向静态存储的指针,这意味着该字符串不应被修改,并且在每次。

立志成为炼丹师? 1193

TCP/IP网络编程笔记-ch3.地址族与数据序列

文章目录函数地址信息结构sockaddr_in结构sockaddr_in成员分析sin_family:sin_port:sin_addr:sin_zero:网络字节序与地址变换网络字节序地址变换网络地址的初始化和分配inet_addrinet_atoninet_ntoa网络地址初始化实例 函数 //主机字节序与网络字节序的转换 unsigned short htons(unsigned short); unsigned short ntohs(unsigned short); unsigned long h

shaoyeStillYoung的博客 672
上一篇: TCP/IP 第2章 套接字类型与协议设置
下一篇: TCP/IP 第4章 基于TCP的服务器端/客户端(1)
Mr_Treeeee
博客等级 码龄10年 38粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值