Linux——网络(2)
一、通信 --- 不同主机上进程间的通信
1、IP和端口号
IP:标识网络中的一台主机
本质上 32位的整型数据
端口号:
标识某个进程
本质上 16位的整型数据
2、udp和tcp
udp的特点:
- 1.无连接
- 2.不可靠
tcp的特点:
- 1.面向链接
- 2.可靠传输
二、udp编程(c/s模型 )
客户端
socket
sendto
...
服务器端 ---把自己的地址公布出去
socket
bind //绑定
recvfrom
...
1、recvfrom 函数
ssize_t recvfrom(int sockfd, //socket的fd
void *buf, //保存数据的一块空间的地址
size_t len, //这块空间的大小
int flags, // 0 默认的接收方式 --- 阻塞方式
struct sockaddr *src_addr, //用来保存发送方的地址信息
socklen_t *addrlen //表示发送方实际的地址信息大小
);
返回值:
成功 返回接收到的字节数
失败 -1
2、bind 函数
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
功能:如果该函数在服务器端调用,则表示将参数1相关
的文件描述符文件与参数2 指定的接口地址关联,
用于从该接口接受数据。
如果该函数在客户端调用,则表示要将数据从
参数1所在的描述符中取出并从参数2所在的接口
设备上发送出去。
注意:
如果是客户端,则该函数可以省略,由默认接口发送数据。
参数:
sockfd 之前通过socket函数创建的文件描述符,套接字id
my_addr 是物理接口的结构体指针。表示该接口的信息。
struct sockaddr 通用地址结构 --- ip + 端口
{
u_short sa_family; 地址族
char sa_data[14]; 地址信息
};
3、转换网络地址
转换成网络地址结构如下:
struct sockaddr_in //网络地址结构
{
u_short sin_family; //地址族
u_short sin_port; //地址端口
struct in_addr sin_addr; //地址IP //"192.168.1.123"
char sin_zero[8]; //占位
};
(in_addr_t === unsigned int )
struct in_addr
{
in_addr_t s_addr;
}
三、tcp编程(c/s模式)
1、tcp 客户端
1).建立连接
socket //买了一部手机
bind //可选 //插上sim卡
connect //拨打电话
....
2).通信过程
read
write
close
2、tcp服务器
1).建立连接
socket //买了一部手机
bind //插上sim卡
listen //监听 客户端的连接请求
accept //接听 ---这一步完成之后 连接就建立好了,之后就可以收发数据
.....
2).通信过程
read
write
close
3、tcp的建立过程
tcp三次握手 :

4、connect 函数
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
功能:该函数固定有客户端使用,表示从当前主机向目标
主机发起链接请求。
参数:sockfd 本地socket创建的套接子id
addr 远程目标主机的地址信息。
addrlen 参数2的长度。
返回值:成功 0
失败 -1;
struct sockaddr *addr //通用地址结构类型,并没有实际去用,实际用到都是具体地址结构类型
相关文章:
Linux——网络(2)
一、通信 --- 不同主机上进程间的通信 1、IP和端口号 IP:标识网络中的一台主机 本质上 32位的整型数据 端口号: 标识某个进程 本质上 16位的整型数据 2、udp和tcp udp的特点: 1.无连接 2.不可靠 tcp的特点: 1.面…...
结合量子技术解决数据传输安全
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 接前篇:数采网关面…...
【Rust光年纪】提高开发效率:深入了解Rust语言中的数据库客户端和文件处理库
深入探索:Rust语言中多款数据库客户端与文件处理库详解 前言 在现代软件开发中,使用各种数据库和文件处理操作是非常常见的。Rust语言作为一种快速、安全、并发的系统编程语言,也拥有丰富的生态系统和库。本文将介绍几个用于Rust语言的数据…...
【自动驾驶】控制算法(一)绪论与前期准备
写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…...
CSDN创作一周年总结
一周年总结 文章目录 一周年总结我的第一篇文章这一年我收获到了什么?1.培养了逻辑能力2.形成了自己的知识库,知识网络3.功利性的收获 我的第一篇文章 不知不觉之间,也已经过去一年了。还记得第一次决定在csdn上写博客,是因为进入…...
World of Warcraft [CLASSIC] the Eye of Eternity [EOE] P1-P2
World of Warcraft [CLASSIC] the Eye of Eternity [EOE] 永恒之眼(蓝龙) 第一阶段 第二阶段 第三阶段 载具1-6技能介绍 World of Warcraft [CLASSIC] the Eye of Eternity [EOE]_永恒之眼 eoe-CSDN博客 永恒之眼怎么出副本呢,战斗结束&am…...
一键翻译全球:多语言支持下的英文翻译工具
随着科技的飞速发展,一系列英文翻译工具应运而生,它们以人工智能为驱动,极大地简化了跨语言交流的过程。本文将带您一窥英文翻译工具探索那些能够帮助我们跨越语言鸿沟的神奇工具。 1.福昕在线翻译 链接直达>>https://fanyi.pdf365.c…...
水战再起波澜,“怡宝”要下好怎样一盘棋?
不少投资者常把那些刚需性强、永远也不可能淘汰的产业称为“日不落产业”,从细分板块来看,水无疑具有一定代表性。农夫山泉掌门人钟晱晱曾直言:“我选择了一个日不落的产业,你永远要喝水,不可能不喝水。” 多年下来&a…...
使用maven快速生成打包文件3
这里再介绍一种打包方式,依赖包分开打包,直接将需要部署的文件打包成一个要锁文件,比如kafka-roma-bin.tar.gz,这里需要两个文件,一个pom2.xml,一个package.xml。 pom2.xml <?xml version"1.0&q…...
Excel技巧(一)
快捷键技巧 原文链接 选取某一行的数据直到最后一行:【CTRL SHIFT ↓ 】或者选取一行后按住SHIFT键,双击下边线就可以快速选取区域。 如果表格中有多行空行,可以先按CTRL SHIFT END,再按CTRL SHIFT 上下键调整,…...
C语言:文件复制
文本文件复制: #include<stdio.h>int main() {FILE* pFile1 NULL;FILE* pFile2 NULL;fopen_s(&pFile1,"D:\\11111.txt","r");fopen_s(&pFile2,"D:\\222.txt", "w");char c;while((cfgetc(pFile1))!EOF){f…...
谈谈建筑项目管理:类型、流程和工具
无论是在材料采购还是供应商管理方面,确保建筑项目按计划进行并控制在预算内始终是一项挑战。 如今,建筑项目管理正逐步采用软件驱动的方法来提升其效率。这一转型显著优化了项目规划、调度和资源配置,使建筑管理更加精确和高效。 什么是建…...
【Vue】生命周期函数
系列文章目录 第五章 生命周期函数 文章目录 系列文章目录 生命周期函数代表的是Vue实例,或者是Vue组件,在网页中各个生命阶段所执行的函数。生命周期函数可以分为创建阶段、挂载阶段、更新阶段以及卸载阶段。 创建阶段:setup挂载阶段&…...
C++系列-文件操作
文件操作 文件类型文本文件二进制文件 文件操作的三大类文件的打开方式ios::app(append)和 ios::ate(at end) 写文件写文件文件步骤读文件文件步骤二进制文件读写写一般数据写特殊数据 程序运行时产生的数据都属于临时数据,一旦程序运行完毕,就会释放&am…...
ES6解构赋值详解;全面掌握:JavaScript解构赋值的终极指南
目录 全面掌握:JavaScript解构赋值的终极指南 一、数组解构赋值 1、基本用法 2、跳过元素 3、剩余元素 4、默认值 二、对象解构赋值 1、基本用法 2、变量重命名 3、默认值 4、嵌套解构 三、复杂的嵌套结构解构 四、函数参数解构赋值 1、对象解构作为函…...
2-73 基于matlab的weber能量法求解齿轮时变啮合刚度的程序
基于matlab的weber能量法求解齿轮时变啮合刚度的程序,能够跑出刚度图,通过求解轮齿部分变形、基体变形及局部接触变形这三部分的变形,进而求得综合弹性变形,最终求出时变啮合刚度。程序已调通,可直接运行。 2- 73 齿轮…...
[C++]set和map的介绍及使用
关于set和map的接口函数部分,只重点介绍一些相较于别的容器有特殊地方的接口,set和map的接口可以触类旁通。 一、概念 (一)、关联式容器 关联式容器存储的元素是一个个的键值对<key,value>。通过键(key&#x…...
【MySQL】MySQL学习笔记(持续更新)
1. 安装MySQL(windows环境) (1)在http://www.mysql.com下载*.msi的安装文件,并运行安装: 如:mysql-installer-community-8.0.39.0.msi 全部安装包含如下内容: …...
ArcGIS如何将投影坐标系转回为地理坐标系
有时候两个数据,一个为投影坐标系,另一个为地理坐标系时,在GIS软件中位置无法叠加到一起,这需要将两个或多个数据的坐标系统一,可以直接将地理坐标系的数据进行投影,或将投影坐标系转为地理坐标系。下面介绍…...
Parallels Desktop 19 for Mac 安装虚拟机需要激活吗
Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机,并于其中装设不同的操作系统,如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时,您可在 …...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
