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

8.13网络编程

笔记

多点通信

一、套接字属性

套接字属性的获取和设置

       #include <sys/types.h>          /* See NOTES */#include <sys/socket.h>int getsockopt(int sockfd, int level, int optname,void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);功能:设置套接字在不同层上的属性参数1:套接字文件描述符参数2:要设置的层应用层:SOL_SOCKET传输层:tcp传输:IPPROTO_TCPudp传输:IPPROTO_UDP网络层: IPPROTO_IP           参数3:要设置当前层的属性名称 ,常用每层属性见下表参数4:要设置或者获取属性的值    ,一般为int类型参数5:参数4的大小返回值:成功     返回0,失败返回-1并置位错误码         

二、网络通信方式

1> 单播:发送端和接收端完成一对一的通信方式。目前的通信模型都是单播

2> 广播:发送端和接收端完成一对多的通信方式,网络将发送端的数据,全部复制一遍发送给每个接收端一份。

3> 组播:发送端和接收端完成一对多的通信方式,但是仅仅只限于加入多播组的成员。

三、广播

1> 广播是实现网络通信中一对多的通信方式,发送端用于发送数据,每个接收端都可以收到消息

2> 对于套接字而言,一般是不允许发送广播消息的,需要对发送端套接字进行设置允许广播

setsockopt ---> SOL_SOCKET ----> SO_BROADCAST ----> int

3> 广播的发送端需要绑定广播地址

广播地址:网络号 + 255

当前网络中,主机号为255的那个ip地址

4> 广播消息不允许穿过路由器,广播地址只对当前局域网中的所有主机进行消息的转发

5> 广播分为发送端和接收端,发送端用于发送数据,接收端用于接收数据

6> 广播只能使用UDP实现,接收端无论愿不愿意接收,发送端都正常发送消息

7> 广播的发送端流程 ---> UDP的客户端

四、组播

1> 组播也是实现一对多的通信方式,对于广播而言,网络需要对每个消息进行复制转发,会占用大量的带宽,导致网络拥塞

2> 组播可以实现小范围的数据传播:将需要接收数据的接收端加入多播组,发送端向多播组中发送消息,每个组内成员都能接收到消息

3> 需要对接收端进行设置,将接收端加入多播组

1、需要使用setsockopt函数实现
2、需要对网络层设置:IPPROTO_IP
3、需要对加入多播组属性设置:IP_ADD_MEMBERSHIP
4、属性值的类型struct ip_mreqn {struct in_addr imr_multiaddr; /* 组播地址:D类网络(224.0.0.0 --- 239.255.255.255) */struct in_addr imr_address;   /* 当前主机IP地址 */int            imr_ifindex;   /* 网卡编号: 通过指令 ip ad查看 */};

4> 组播也是使用UDP实现的,无论接收端是否愿意接收数据,发送端都可以正常向多播组中发送数据

5> 组播也分为发送端和接收端流程

6> 组播发送端流程 -----> 类似于UDP的客户端流程

7> 组播的接收端流程 ------> 类似于UDP的服务器端流程

作业

TCP机械臂测试

通过w(红色臂角度增大)s(红色臂角度减小)d(蓝色臂角度增大)a(蓝色臂角度减小)按键控制机械臂

注意:关闭计算机的杀毒软件,电脑管家,防火墙

1)基于TCP服务器的机械臂,端口号是8888, ip是Windows的ip;

查看Windows的IP:按住Windows+r 按键,输入cmd , 输入ipconfig

2)点击软件中的开启监听;

3)机械臂需要发送16进制数,共5个字节,协议如下

0xff 0x02 x y 0xff 0xff:起始结束协议,固定的; 0x02:控制机械手臂协议,固定的; x:指定要操作的机械臂 0x00 红色摆臂 0x01 蓝色摆臂 y:指定角度

#include <myhead.h>int main(int argc, const char *argv[])
{//创建套接字int sfd=socket(AF_INET,SOCK_STREAM,0);if(sfd==-1){perror("soket error");return -1;}//绑定数据struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(8888);sin.sin_addr.s_addr=inet_addr("192.168.2.33");//端口快速重用int resue=1;if(setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&resue,sizeof(resue))==-1){perror("setsockopt error");return -1;}//链接客户端if(connect(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("connect error");return -1;}printf("链接成功!\n");//接收输入命令char buf=0;//定义机械臂控制指令char p1[5]={0xff,0x02,0x00,0x00,0xff};char p2[5]={0xff,0x02,0x01,0x00,0xff};//初始化机械臂send(sfd,p1,5,0);send(sfd,p2,5,0);//操控实现while(1){buf=fgetc(stdin);if(buf=='w'){*(p1+3)=*(p1+3)+1;send(sfd,p1,5,0);}else if(buf=='s'){*(p1+3)=*(p1+3)-1;send(sfd,p1,5,0);}else if(buf=='d'){*(p2+3)=*(p2+3)+1;send(sfd,p2,5,0);}else if(buf=='a'){*(p2+3)=*(p2+3)-1;send(sfd,p2,5,0);}}close(sfd);return 0;
}

思维导图

相关文章:

8.13网络编程

笔记 多点通信 一、套接字属性 套接字属性的获取和设置 #include <sys/types.h> /* See NOTES */#include <sys/socket.h>int getsockopt(int sockfd, int level, int optname,void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level…...

蚂蚁AL1 15.6T 创新科技的新典范

● 哈希率&#xff1a;算力达到15.6T&#xff08;相当于15600G&#xff09;&#xff0c;即每秒能够进行15.6万亿次哈希计算&#xff0c;在同类产品中算力较为出色&#xff0c;能提高WA掘效率。 ● 功耗&#xff1a;功耗为3510W&#xff0c;虽然数值看似不低&#xff0c;但结合其…...

2024年【汽车驾驶员(技师)】考试报名及汽车驾驶员(技师)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 汽车驾驶员&#xff08;技师&#xff09;考试报名参考答案及汽车驾驶员&#xff08;技师&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及汽车驾驶员&#xff08;技师&#xff09;操作证已考过的学员汇总…...

2024年【甘肃省安全员C证】报名考试及甘肃省安全员C证考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 甘肃省安全员C证报名考试参考答案及甘肃省安全员C证考试试题解析是安全生产模拟考试一点通题库老师及甘肃省安全员C证操作证已考过的学员汇总&#xff0c;相对有效帮助甘肃省安全员C证考试总结学员顺利通过考试。 1、…...

RabbitMQ 双机系统偶尔丢失消息问题排查

实话说起来&#xff0c;这个问题&#xff0c;实际是一个非常低级的错误导致的&#xff0c;算不得什么高深的技术问题。但是在排查的过程中&#xff0c;却是费了好大的功夫&#xff0c;死了不少脑细胞。所以也值得记录一下&#xff0c;算作给大家提个醒&#xff0c;或许可以帮大…...

Python 环境搭建指南 超详细

Python是由荷兰⼈吉多范罗苏姆&#xff08;Guido von Rossum&#xff0c;后⾯都称呼他为Guido&#xff09;发明的⼀种编程语言 1. 1989年圣诞节&#xff1a;Guido开始写Python语⾔的编译器。2. 1991年2⽉&#xff1a;第⼀个Python解释器诞⽣&#xff0c;它是⽤C语⾔实现的&…...

使用三菱PLC源码进行PLC读取写入操作

安装 MX Component 。 我的安装地址在&#xff1a; 打开 utl 文件夹下的 Communication Settings Utility 执行。 配置PLC 添加当前需要配置的PLC 注意 logical station Namber 就是程序里需要对接的逻辑站点编号 5.配置选择对应的COM操作选择对应的cpu型型号&#xff0c;…...

使用Nvm切换nodeJs高版本之后,使用npm install一闪而过

先说现象,最近又有几个项目接手,其中有一个使用NVM切换至高版本node后,出现如下症状; 没有任何提示,然后翻看文件目录,node_modules目录没有创建,同时在全局 npm config set prefix 设置的目录下 多了一个 pgn的快捷,指向项目目录。 使用百度或者chart-gtp,搜索到的答案…...

【Kubernetes】k8s集群安全机制

目录 一.认证 1.k8s集群内的三种认证方式 2.k8s集群内的认证说明 2.1.需要被认证的访问类型 2.2.安全性说明 2.3.证书颁发的方式 2.4.kubeconfig 2.5.Service Account 2.6.Secret 与 SA 的关系 二.鉴权 1.鉴权的方式 2.RBAC的角色与角色绑定 2.1.RBAC的角色 2.2…...

嵌入式学习---DAY24:进程--二

一、exec函数族----启动一个新程序 用fork创建子进程后执行的是和父进程相同的程序&#xff08;但有可能执行不同的代码分支&#xff09;&#xff0c; 子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时&#xff0c;该进程的 用户空间代码和数据完全被…...

Diffusion Model相关论文解析之(二)DENOISING DIFFUSION IMPLICIT MODELS

目录 1、摘要2、创新点3、主要公式4、自己的理解&#xff0c;对错不确定 1、摘要 ‌Denoising Diffusion Implicit Models (DDIM)‌是一种扩散模型的改进版本&#xff0c;旨在加速采样过程并提高采样速度。DDIM通过引入非马尔可夫扩散过程&#xff0c;相对于传统的去噪扩散概率…...

【STM32嵌入式系统设计与开发拓展】——14_定时器之输入捕获

参考哔站&#xff1a;链接: 铁头山羊 一、微控制器的高级定时与控制功能集合 1、时基单元 2、输入捕获 3、输出比较 4、从模式控制器 5、高级定时器的输出控制 二、问题集合 1、什么是定时器 定时器是一种专门负责定时功能的片上外设GPI0AFI0EXTIUSART RCC I2C) 2、定时器…...

docker swarm如何让两个副本分别跑在两台不同的主机上

虽然 docker swarm 支持自动扩容部署&#xff0c;但是为了服务的稳定性、可靠性&#xff0c;有的时候甲方巴巴会要求一定要服务分散部署在不同的服务器上。 使用默认的部署方式&#xff0c;虽然副本为 N&#xff0c;但是部署的 N 个服务可能落在同一台服务器上。 在 Docker Swa…...

GPT助手的训练流程四个主要阶段( GPT Assistant training pipeline )

GPT助手的训练流程四个主要阶段&#xff08; GPT Assistant training pipeline &#xff09; flyfish 四个阶段 预训练&#xff08;pre-training&#xff09; 监督微调&#xff08;supervised fine tuning, SFT&#xff09; 奖励建模&#xff08;reward modeling&#xff09…...

网络如何发送一个数据包

网络如何发送一个数据包 网络消息发送就是点一点屏幕。 骚瑞&#xff0c;这一点都不好笑。&#xff08;小品就是我的本质惹&#xff09; 之前我就是会被这个问题搞的不安宁。是怎么知道对方的IP地址的呢&#xff1f;怎么知道对方的MAC呢&#xff1f;世界上计算机有那么多&…...

【Harmony OS 4.0】向上滑动加载案例

// 自定义class类对象类型 class Article {public id: numberpublic title: stringpublic content: stringconstructor(id: number, title: string, content: string) {this.id idthis.title titlethis.content content} }// 子组件 Component struct ArticleComponent {Pro…...

SQL基础教程(八)SQL高级处理

※食用指南&#xff1a;文章内容为《SQL基础教程》系列学习笔记&#xff0c;该书对新手入门非常友好&#xff0c;循序渐进&#xff0c;浅显易懂&#xff0c;本人主要用来补全学习MySQL中未涉及的部分&#xff0c;便于刷题和做项目。 官方电子书&#xff1a;《SQL基础教程》第2…...

[论文笔记] Data-Juicer: A One-Stop Data Processing System for Large Language Models

https://arxiv.org/pdf/2309.02033 GitHub - modelscope/data-juicer: A one-stop data processing system to make data higher-quality, juicier, and more digestible for (multimodal) LLMs! 🍎 🍋 🌽 ➡️ ➡️🍸 🍹 🍷为大模型提供更高质量、更丰富、更易”…...

期末速成复习资料——操作系统

体型&#xff1a;选择20判断10填空10*2简答4*5计算2*10 第一章 在一个计算机系统中&#xff0c;通常都含有多种硬件和软件资源。归纳起来可将这些资源分为四类&#xff1a;处理机、存储器、I/O设备以及文件&#xff08;数据和程序&#xff09;。相应地&#xff0c;OS的主要功能…...

Android之Service与IntentService区别

目录 Service特点使用场景示例 IntentService特点使用场景示例 区别总结线程管理&#xff1a;生命周期&#xff1a;使用场景&#xff1a;自动停止&#xff1a; 总结 在Android开发中&#xff0c;Service是一个可以在后台执行长时间运行操作的组件。主要有两种类型的Service&…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...