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

Linux--网络编程-字节序

进程间的通信:
管道、消息队列、共享内存、信号、信号量。

特点:都依赖于linux内核。
缺陷:无法多机通信。

一、网络编程:

1、地址:基于网络,ip地址+端口号。

端口号作用:
一台拥有ip地址的主机可以提供许多服务,如web服务、FTP服务、SMTP服务等。
这些服务完全通过1个ip地址来实现。主机区分不同的网络服务通过“ip地址+端口号”来区分的。
端口提供了一种访问通道。
服务器一般都是通过知名端口号来识别的。
例如,对于每个TCP/IP实现来说,

FTP服务器的TCP端口号都是21,
每个Telnet服务器的tcp端口号都是23
每个TFTP(简单文件传送协议)服务器的UDP端口号都是69.

2、数据:协议 ( HTTP、TCP、UDP )
(数据格式,非常成熟,操作系统已经搞好)
TCP面向连接,a拨号给b,讲电话。连接可靠,传送的信息量准确。

UDP面向报文,a与b连接,发短信形式。连接不可靠,数据量大,有各自的应用场景。

TCP/UDP对比:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前,不需要建立连接。
2、TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,按序到达。UDP尽最大努力交付,即不保证可靠交付。
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使主机的发送速率降低(对实时应用很有用,如ip电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一、多对多的交互通信。
5、TCP首部开销20字节;UDP首部开销小,8字节。
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

入门网络编程:
socket套接字网络编程(套接字网络编程),一般用到TCP协议或UDP协议。

二、字节序

概述
字节序是指多字节数据再计算机内存中存储或网络传输时各字节的存储顺序。

常见序:
1、Little endian(小端字节序):将低序字节存储在起始地址
2、Big endian(大端字节序):将高序字节存储在起始地址
网络字节序相当于大端字节序
x86系列cpu都是小端字节序

通过下面的4个函数可以实现主机字节序和网络字节序之间的切换。
有时可以使用INADDR_ANY,INADDR_ANY指定地址让操作系统自己获取。


#include <netinet/in.h> uint16_t htons(uint16_t host16bititvalue);//返回网络字节序的值 
uint32_t htonl(uint32_t host32bititvalue);//返回网络字节序的值
uint16_t ntohs(uint16_t net16bitvalue);//返回主机字节序的值
uint32_t ntohl(uint32_t net32bitvalue);//返回主机字节序的值 
/*
h :host,
n :net,
s :short(两个字节)
l :long(4个字节)
*/

例:
(0x:十六进制)
在内存中双字0x01020304(DWORD)的存储方式:
内存地址:
4000&4001&4002&4003
LE 04 03 02 01 (小端字节序:低字节序放在低地址)
BE 01 02 03 04 (大端字节序:反之)
存储的数据:0x01020304
01为高字节,04为低字节
字节单位:(byet)1字节 = 8 bit
在这里插入图片描述

相关文章:

Linux--网络编程-字节序

进程间的通信&#xff1a; 管道、消息队列、共享内存、信号、信号量。 特点&#xff1a;都依赖于linux内核。 缺陷&#xff1a;无法多机通信。 一、网络编程&#xff1a; 1、地址&#xff1a;基于网络&#xff0c;ip地址端口号。 端口号作用&#xff1a; 一台拥有ip地址的主机…...

python实现http/https拦截

python实现http拦截 前言:为什么要使用http拦截一、技术调研二、技术选择三、使用方法前言:为什么要使用http拦截 大多数爬虫玩家会直接选择API请求数据,但是有的网站需要解决扫码登录、Cookie校验、数字签名等,这种方法实现时间长,难度高。需求里面不需要高并发,有没有…...

农产品团购配送商城小程序的作用是什么

农产品覆盖稻麦油蛋等多种细分类目&#xff0c;各地区经营商家众多&#xff0c;随着人们生活品质提升&#xff0c;对食物的要求也在提升&#xff0c;绿色无污染无激素的农产品往往受到不少人喜爱&#xff0c;而在销售中&#xff0c;也有不少人选择自建商城线上经营。 通过【雨…...

使用van-dialog二次封装微信小程序模态框

由于微信小程序的wx.showModal不支持富文本内容&#xff0c;无法实现更灵活的展示效果&#xff0c;故需要进行二次封装 实现思路&#xff1a;使用van-dialog以及微信小程序的rich-text实现 代码如下&#xff1a; // index.wxml <van-dialoguse-slottitle"提示"s…...

生鲜蔬果同城配送社区团购小程序商城的作用是什么

生鲜蔬果行业作为市场主要支撑之一&#xff0c;从业商家众多的同时消费者也从不缺&#xff0c;尤其对中高城市&#xff0c;生鲜蔬果除了传统线下超市、市场经营外&#xff0c;线上更是受到大量消费者信任&#xff0c;而很多商家也是自建了生鲜蔬果商城多场景生意经营。 那么通…...

Unity实现设计模式——状态模式

Unity实现设计模式——状态模式 状态模式最核心的设计思路就是将对象的状态抽象出一个接口&#xff0c;然后根据它的不同状态封装其行为&#xff0c;这样就可以实现状态和行为的绑定&#xff0c;最终实现对象和状态的有效解耦。 在实际开发中一般用到FSM有限状态机的实现&…...

差分数组的应用技巧

前缀和技巧 针对的算法场景是不需要对原始数组进行修改的情况下&#xff0c;频繁查询某个区间的累加和。 差分数组 主要适用场景是频繁对原始数组的某个区间的元素进行增减。 相关题目 1094. 拼车 1109. 航班预订统计 370. 区间加法 # 1094. 拼车 class Solution:def carPool…...

斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 10 Mining Social-Network Graphs

来源&#xff1a;《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT。 Chapter 10 Mining Social-Network Graphs The essential characteristics of a social network are: There is a collection of entities that participate in the network. Typically, these entiti…...

DFS:842. 排列数字

给定一个整数 nn&#xff0c;将数字 1∼n1∼n 排成一排&#xff0c;将会有很多种排列方法。 现在&#xff0c;请你按照字典序将所有的排列方法输出。 输入格式 共一行&#xff0c;包含一个整数 nn。 输出格式 按字典序输出所有排列方案&#xff0c;每个方案占一行。 数据…...

pytorch之nn.Conv1d详解

自然语言处理中一个句子序列&#xff0c;一维的&#xff0c;所以使用Conv1d...

H5生成二维码

H5生成二维码&#xff1a; 1.引入js库&#xff0c;可自行点击链接复制使用 <script type"text/javascript" src"http://static.runoob.com/assets/qrcode/qrcode.min.js"></script>2.加入二维码占位区HTML <div id"qrCode">…...

Three.js加载360全景图片/视频

Three.js加载360全景图片/视频 效果 原理 将全景图片/视频作为texture引入到three.js场景中将贴图与球形网格模型融合&#xff0c;将球模型当做成环境容器使用处理视频时需要以dom为载体&#xff0c;加载与控制视频动作每次渲染时更新当前texture&#xff0c;以达到视频播放效…...

北大硕士7年嵌入式学习经验分享

阶段 1 大一到大三这个阶段我与大多数学生相同&#xff1a; 学习本专业知识&#xff08;EE专业&#xff09;&#xff0c;学习嵌入式软件开发需要的计算机课程&#xff08;汇编原理&#xff0c;计算机组成原理&#xff0c;操作系统&#xff0c;C语言等&#xff09;&#xff0c…...

华为鸿蒙手表开发之动态生成二维码

华为鸿蒙手表开发之动态生成二维码 前言&#xff1a; 最近入职新公司&#xff0c;由于之前的哥们临时离职&#xff0c;走得很突然&#xff0c;所以没有任何交接和文档&#xff0c;临时顶上公司手表应用的上架&#xff0c;更换了新的密钥和key之后重新测试功能和流程&#xff…...

2023-09-28 monetdb-databae的概念和作用-分析

摘要: 每个数据库对于db,schema以及user,role都有一套自己的设计, 不同数据库间对于相同名字的东西例如database和schema可以说南辕北辙, 例如mysql中schema其实是database的同义词. 本文分析monetdb的database的概念和作用 database的概念和作用: 和mysql的database完全不同…...

2024级199管理类联考之数学基础(上篇)

管理类考试介绍 管理综合200分,时间3小时 数学&#xff1a;75分/25题,是拉开差距的核心模块 问题求解题&#xff1a;15个,5选一条件充分性判断&#xff1a;10个,结合两个条件选择答案 条件一充分,条件二不充分&#xff1a;A条件一不充分,条件二充分&#xff1a;B条件一充分,条…...

RFID技术引领汽车零部件加工新时代

RFID技术的兴起引领了汽车零部件加工领域的新时代&#xff0c;作为一种利用无线电频率进行自动识别的技术&#xff0c;RFID技术能够快速、准确地识别物体并获取相关数据&#xff0c;在汽车零部件加工中&#xff0c;RFID技术具有重要的应用价值&#xff0c;可以提高生产效率、降…...

python中使用matplotlib绘图

一、背景 当我们在写python程序时&#xff0c;不可避免的需要将数据可视化&#xff0c;也就是绘制出数据的曲线图&#xff0c;以便我们更直观的观察数据间的变化&#xff0c;和方便对比。此时就要用到matplotlib库了。 matplotlib官方给出的定义是&#xff1a; 翻译过来也就是…...

Qt Creator 使用技巧

使用技巧 功能快捷键解释Switch Header/SourceF4在同名的头文件和源程序文件之间切换Follow Symbol Under CursorF2变量:跳转到声明;函数:声明和定义切换Refactor Rename Symbol Under CursorCtrlShiftR改名称&#xff0c;将替换所有用到这个符号的地方RefactorAdd Definition…...

来看看双阶段目标检测算法趴

&#x1f680; 作者 &#xff1a;“码上有钱” &#x1f680; 文章简介 &#xff1a;AI-目标检测算法 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac;简介 双阶段目标检测算法是一类深度学习算法&#xff0c;通常分为两个阶段来检测和识别图像中的…...

python利用matplotlib绘图,对于中文和负号不显示,显示方框“口口”完美解决办法!!

文章目录 一、问题展示二、问题分析三、解决办法四、结果展示 一、问题展示 二、问题分析 可以发现对中文&#xff0c;以及负号不显示。 三、解决办法 import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [usimHei] # 显示中文 plt.rcParams[axes.unicode_mi…...

【数组及指针经典笔试题解析】

1.数组和指针笔试题 题目1 int main(){int a[5] { 1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5};int * ptr (int * )(&a 1);printf("%d&#xff0c;%d"&#xff0c;*(a 1)&#xff0c;*(ptr - 1));return 0;}图文解析&#xff1a; int * ptr …...

Transformer学习-self-attention

这里写自定义目录标题 Self-attentionMulti-head self-attention用self-attention解决其他问题 Self-attention 用Wq、Wk、Wv分别乘输入向量得到q、k、v向量 用每个q向量乘所有的k向量得到对应项的attention&#xff0c;即用每项的query向量去匹配所有的key向量&#xff0c;得…...

Spring Boot:利用JPA进行数据库的增改

目录 JPA介绍Service接口Service和Autowired示例代码 Dao数据库操作层Repository示例代码 控制器文件示例代码-增加增加成功示例代码-修改修改成功 JPA介绍 JPA&#xff08;Javaa Persistence API)一种用于持久化 Java 对象到关系型数据库的标准规范。它提供了一种统一的方式来…...

列表的增删改查和遍历

任务概念 什么是任务 任务是一个参数为指针&#xff0c;无法返回的函数&#xff0c;函数体为死循环不能返回任务的实现过程 每个任务是独立的&#xff0c;需要为任务分别分配栈称为任务栈&#xff0c;通常是预定义的全局数组&#xff0c;也可以是动态分配的一段内存空间&#…...

获取网卡上的IP、网关及DNS信息,获取最佳路由,遍历路由表中的条目(附源码)

VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&a…...

保姆级 -- Zookeeper超详解

1. Zookeeper 是什么(了解) Zookeeper 是一个 分布式协调服务 的开源框架, 主要用来解决分布式集群中应用系统的一致性问题, 例如怎样避免同时操作同一数据造成脏读的问题. ZooKeeper 本质上是 一个分布式的小文件存储系统 . 提供基于类似于文件系统的目录树方式的数据存储, …...

【通意千问】大模型GitHub开源工程学习笔记(2)--使用Qwen进行推理的示例代码解析,及transformers的库使用

使用Transformers来使用模型 如希望使用Qwen-chat进行推理,所需要写的只是如下所示的数行代码。请确保你使用的是最新代码,并指定正确的模型名称和路径,如Qwen/Qwen-7B-Chat和Qwen/Qwen-14B-Chat 这里给出了一段代码 from transformers import AutoModelForCausalLM, Aut…...

从0开始python学习-23.selenium 常见鼠标的操作

注意&#xff1a;必须创建一个事件链对象&#xff08;ActionChains&#xff09;&#xff1b;最后鼠标事件链完成之后一定要进行事务提交perform&#xff08;&#xff09;&#xff08;如果事件链不提交那么所有的鼠标事件都不会执行&#xff09; 1. 左键单击&#xff1a;click()…...

电气基础——电源、变压器、接触器、断路器、线缆

目录 1.电源 2.变压器 三项电和2相电的转换 3.接触器 4.断路器 5.线缆 1.电源 2.变压器 三项电和2相电的转换 三相电转为2相电 1.变压器 2.相位移转换器 3.电容器 两相电变不了三相电。但是两相电可以通过电容移相后带动三相电机 零线&#xff0c;地线N&#xff…...

报名网站制作/南平seo

程序员掌握 HTTP 有多重要&#xff1f;1&#xff1a;了解Http协议&#xff0c;可以了解Web应用程序前后端的交互2&#xff1a;可以模仿Http的post和get的请求方式&#xff0c;写一个类似HttpClient的工具&#xff0c;然后爬虫。3&#xff1a;可以自己写一个浏览器&#xff0c;对…...

安徽茶叶学会 网站建设/东莞外贸推广公司

使用Cartool工具包分析EEG源成像1 基本要求1.1 EEG预处理 (EEG Pre-processing)1.2 时间过滤 (Temporal Filtering)1.3 下采样&#xff08;降低采样率&#xff09; (Down-Sampling)1.4 电极插值与ICA (Electrode Interpolation and ICA)1.5 空间过滤 (Spatial Filtering)1.6 检…...

40个常见的html标签及含义/桔子seo网

第1部分&#xff1a;如何使用dr.fone解锁没有密码的iPad&#xff1f;通过dr.fone - Unlock(iOS)可以帮助你解锁设备而不会对其造成任何损坏。作为dr.fone工具包的一部分&#xff0c;它是一个非常先进的工具&#xff0c;从死机到处于恢复模式&#xff0c;从数据备份到恢复&#…...

网站推广的主要方法/seo网站seo

楼主工作的单位是一家欧洲公司&#xff0c;主营奢侈品的生产和销售&#xff0c;我们有一个PLM&#xff08;产品生命周期管理系统&#xff09;&#xff0c;用来管理产品的主数据&#xff0c;例如对部品及物料从设计到生产&#xff0c;以及BOM等主数据的管理&#xff0c;我们采购…...

唐山市住房和城乡建设局官方网站/企拓客软件多少钱

这题的题意是给定N个串&#xff0c;某个串的子串在超过一半的串存在的话&#xff0c;那么这个串就是可取的&#xff0c;问满足这样的子串的最长长度是多少&#xff0c;如果有多个的话&#xff0c;按字典序输出。 这题我是用hash过的。大体步骤是这样的&#xff0c;首先保留最长…...

终身免费网站建设/网络营销的营销理念

切片 概述 切片是程序员对数组对象的抽象&#xff0c;在Go里面&#xff0c;数组长度是不可变的&#xff0c;这样会造成我们使用集合的时候比较笨重&#xff0c;只有在固定的场所才可以使用。 Go提供了一种较为灵活的数组&#xff0c;我们可以理解为动态数组&#xff0c;他对比…...