云盘下载

#include <myhead.h>
#define SER_IP "192.168.108.93"
#define SER_PORT 69
#define addr "192.168.109.6"
#define port 8888/******************主程序******************/
int main(int argc, const char *argv[])
{//1、创建一个用于通信的套接字文件描述符int cfd = socket(AF_INET, SOCK_DGRAM, 0);if(cfd == -1){perror("socket error");return -1;}/*2、绑定ip和端口号(可选)struct sockaddr_in cin;cin.sin_family = AF_INET;cin.sin_addr.s_addr = inet_addr(CLI_IP);cin.sin_port = htons(CLI_PORT);if(bind(cfd, (struct sockaddr*)&cin, sizeof(cin))==-1){perror("bind error");return -1;}*///3、数据收发struct sockaddr_in sin;     //目标地址sin.sin_family = AF_INET;sin.sin_port = htons(SER_PORT);sin.sin_addr.s_addr = inet_addr(SER_IP);socklen_t addrlen = sizeof(sin);//向服务器发送一个下载请求char msgbuf[516] = "";//组装协议//1、组装操作码,下载请求的操作码为1short *p1 = (short *)msgbuf;*p1 = htons(1);           //网络字节序,因为是2字节无符号整数//2、将要下载的文件名放入char filename[20] = "";printf("请输入要下载的文件名:");fgets(filename, sizeof(filename), stdin);filename[strlen(filename)-1] = 0;//封装到协议中char *p2 = msgbuf+2;         //跳过前两个字节strcpy(p2, filename);//3、将传输模式放入协议中char *p4 = p2+strlen(p2)+1;strcpy(p4, "octet");int size = 2+strlen(p2)+strlen(p4)+2;//将请求数据包发送给服务器sendto(cfd, msgbuf, size, 0, (struct sockaddr*)&sin, sizeof(sin));	//以只写的形式打开一个名为filename的文件int fd=-1;if((fd=open(filename,O_CREAT|O_WRONLY,0664))==-1){perror("open error");return -1;}while(1){//通过recvfrom接受服务器传来的消息包int len;if((len=recvfrom(cfd,msgbuf,sizeof(msgbuf),0,(struct sockaddr*)&sin,&addrlen))==-1){perror("recvfrom error");return -1;}//解析传来的消息报中的前两字节short x=ntohs(*(short*)msgbuf);//判断如果前两字节的值为5,说明传过来的是错误消息包if(x==5){printf("[error-%d]:%s\n",ntohs(*(msgbuf+2)),msgbuf+4);}//如果前两字节的值为3,则说明传来的是数据信息else if(x==3){//判断消息包的四个字节后的数据长度是否为512//如果是将消息包的4个字节后的数据,写入到文件中if(len==516){write(fd,msgbuf+4,512);//并回复一个:确认包//判断消息包的4字节后的数据长度是否为512,如果是//将消息包的4字节后的数据,写入到文件中//并且回复一个4字节确认包short *p = (short *)msgbuf;*p = htons(4);sendto(cfd, msgbuf, 4, 0, (struct sockaddr*)&sin, sizeof(sin));	}//如果消息包的4字节后的长度为小于512if(len<516){//将最后的数据写入到文件中,回复一个确认包,结束循环write(fd,msgbuf+4,len-4);short *p=(short *)msgbuf;*p=htons(4);sendto(cfd,msgbuf,4,0,(struct sockaddr*)&sin,sizeof(sin));printf("文件下载完成\n");break;}}}//4、关闭套接字close(cfd);close(fd);return 0;
}

机械臂

#include <myhead.h>
#define dis_port 8888
#define dis_addr "192.168.108.93"
#define port 7776
#define addr "192.168.109.6"
int main(int argc, const char *argv[])
{//1.socketint cfd=socket(AF_INET,SOCK_STREAM,0);if(cfd==-1){perror("socket error");return -1;}//2.绑定ip地址struct sockaddr_in cin;cin.sin_family=AF_INET;cin.sin_port=htons(port);cin.sin_port=inet_addr(addr);if(bind(cfd,(struct sockaddr*)&cin,sizeof(cin))==-1){perror("bind error");return -1;}printf("bind success..\n");//3.connect组装对端信息地址结构体struct sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(dis_port);sin.sin_addr.s_addr=inet_addr(dis_addr);if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1){perror("connect error");return -1;}printf("connect success..\n");//设置机械臂初始状态char rbuf[5]={0xff,0x02,0x00,0x00,0xff};unsigned char bbuf[5]={0xff,0x02,0x01,0x00,0xff};send(cfd,rbuf,sizeof(rbuf),0);send(cfd,bbuf,sizeof(bbuf),0);//4.read/writechar buf[128]="";int x;while(1){printf("输入要操作的机械臂[红0/蓝1]:");scanf("%d",&x);if(x==0){while(1){int a;printf("输入移动的角度:");scanf("%d",&x);if(x==999)break;rbuf[3]+=x;send(cfd,rbuf,sizeof(rbuf),0);}}else if(x==1){while(1){	int a;printf("输入移动的角度:");scanf("%d",&x);if(x==999)break;bbuf[3]+=x;send(cfd,bbuf,sizeof(bbuf),0);}}else{printf("输入的数字有误..\n");break;}}close(cfd);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98611.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98611.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/98611.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java调用magic-api中post接口参数问题

Java调用magic-api中post接口参数问题magic官方文档中只提供了get写法解决方法magic官方文档中只提供了get写法 实测使用官方写法调用get接口可调通&#xff0c;参数正常获取&#xff0c;但更换为post写法后&#xff0c;magic脚本中body获取为空 Autowired MagicAPIService s…

《sklearn机器学习——管道和复合估计器》联合特征(FeatureUnion)

超详细解说 sklearn 中的联合特征&#xff08;FeatureUnion&#xff09; 1. FeatureUnion 简介 FeatureUnion 是 scikit-learn 中的一个工具&#xff0c;用于并行地组合多个特征提取器的输出。它允许你将不同的特征提取方法&#xff08;如文本向量化、数值特征缩放、自定义特征…

Eyeshot 2025.3 3D 图形工具包

Eyeshot 2025.3 现在支持 E57 格式Eyeshot 2025.3 现在支持 E57 格式&#xff0c;可直接从 3D 扫描系统导入点云、图像和元数据。Eyeshot 由 devDept 开发&#xff0c;是一款功能全面的 3D 图形工具包&#xff0c;专为构建工程和 CAD(计算机辅助设计)应用程序的 .NET 开发人员而…

OpenResty 配合 Lua 脚本的使用

OpenResty 配合 Lua 脚本的使用实践 在高并发互联网服务中&#xff0c;传统的 Web 服务器往往难以同时兼顾性能与灵活性。而 OpenResty 作为一个基于 Nginx LuaJIT 的高性能 Web 平台&#xff0c;能够让我们在保持 Nginx 高并发性能的同时&#xff0c;使用 Lua 脚本 动态扩展其…

香港券商櫃台系統發展分析與市場觀察

香港券商櫃台系統發展分析與市場觀察 一、市場環境與交易機制變革 2025年以來&#xff0c;香港證券市場表現活躍。港交所現貨市場平均每日成交金額達2,402億港元&#xff0c;同比增長118%。南向交易&#xff08;港股通&#xff09;日均成交額佔比提升至23%&#xff0c;單日淨…

AR技术:多行业数字化转型的加速引擎

在数字化浪潮的推动下&#xff0c;增强现实&#xff08;AR www.teamhelper.cn &#xff09;技术正突破传统娱乐和游戏领域的局限&#xff0c;成为各行业数字化转型的重要力量。从工业制造到医疗健康&#xff0c;从教育培训到零售购物&#xff0c;AR技术以其独特的虚实融合能力&…

第6篇、Kafka 高级实战:生产者路由与消费者管理

Kafka 高级实战&#xff1a;生产者路由与消费者管理&#xff08;Python 版&#xff09;从基础到进阶&#xff1a;深入理解 Kafka 的生产者消息路由、消费者 Offset 管理&#xff0c;以及 Exactly-Once 语义实现 实战导向&#xff1a;提供完整的可运行代码示例&#xff0c;涵盖自…

基于Python读取多个excel竖向拼接为一个excel

在Python中&#xff0c;可以使用pandas库结合glob模块来遍历读取多个Excel文件&#xff0c;并将它们竖向拼接为一个DataFrame对象。以下是完整的实现方法&#xff1a; 文章目录方法1&#xff1a;使用glob匹配文件 pd.concat()方法2&#xff1a;使用列表推导式&#xff08;更简…

Linux《进程信号(下)》

在之前的Linux《进程信号&#xff08;上&#xff09;》当中我们已经了解了进程信号的基本概念以及知道了信号产生的方式有哪些&#xff0c;还了解了信号是如何进行保存的&#xff0c;那么接下来在本篇当中就将继续之前的学习了解信号是如何处理的。除此之外还会了解到中断的概念…

android 性能优化—ANR

ANR产生原理ANR&#xff08;Application Not Responding&#xff09;是 Android 对 “应用主线程卡死” 的系统级保护机制&#xff1a; 当 输入事件、广播、服务 等在规定时间内未被处理完毕&#xff0c;SystemServer 会弹框并杀进程&#xff0c;防止整个系统跟着假死。计时起点…

stm32——单总线,DHT11

目录 一、单总线协议的原理和应用 单总线协议指的是只采用一根信道来进行数据传输&#xff0c;通信指的是双方&#xff08;MCU与传感器&#xff09;通过一根信道进行数据交互&#xff0c;所以按照数据的传输方向&#xff0c;只能采用半双工通信方式&#xff0c;比较典型的传感器…

css3之grid布局

容器&#xff1a;gird container开启grid布局的元素 项目&#xff1a;grid items容器里面的子元素&#xff0c;不包括后代元素 显式网格&#xff08;单元格&#xff09;&#xff1a;通过grid-template-columns和grid-template-rows指定的网格&#xff0c;注意项目不等于单元格,…

C++容器:list

一、list的介绍及使用 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素…

STL库——map/set(类函数学习)

ʕ • ᴥ • ʔ づ♡ど &#x1f389; 欢迎点赞支持&#x1f389; 个人主页&#xff1a;励志不掉头发的内向程序员&#xff1b; 专栏主页&#xff1a;C语言&#xff1b; 文章目录 前言 一、序列式容器和关联式容器 二、set 系列的使用 2.1、set 和 multiset 参考文档 2.2、set…

计算机网络IP协议

1.TCP协议1.1 确认应答1.2 超时重传1.3 连接管理1.4 滑动窗口1.5 流量控制1.6 拥塞控制 1.7 延时应答1.8 稍带应答1.9 粘包问题1.10 异常情况2.IP协议 网络层2.1 NAT机制下的几种情况:同一个局域网中,内网ip访问 内网 ip,可以的不同局域网中,内网IP访问 内网IP,不行~~外网IP访…

Windows电脑如何查看wifi连接记录及连接时间

查询WIFI 连接的记录 echo netsh wlan show profiles netsh wlan show wlanreport POWERSHELL 脚本 Get-WinEvent -LogName Microsoft-Windows-WLAN-AutoConfig/Operational | Where-Object { $_.Id -in (8001,8002) } | Select-Object TimeCreated, Id, {Name"Action…

【golang学习笔记 gin 】1.2 redis 的使用

安装redis go get -u github.com/gin-gonic/gin go get -u github.com/go-redis/redis/v8创建相关目录 gotest->conifg->database.go->redis.go->controller ->index.go->model->user.go->router->router.gomain.go 封装Redis package config impor…

Java学习之——“IO流“的进阶流之序列化流的学习

一、核心概念&#xff1a;什么是序列化与反序列化&#xff1f;序列化 (Serialization)&#xff1a; 将一个对象&#xff08;在内存中的状态&#xff09;转换成一个字节序列的过程。这个字节序列包含了对象的数据、对象的类型以及对象中存储的属性等信息。反序列化 (Deserializa…

机器学习04——决策树(信息增益、信息增益率、ID3、C4.5、CART、剪枝、连续值缺失值处理)

上一章&#xff1a;机器学习03——线性模型 下一章&#xff1a;机器学习05——多分类学习与类别不平衡 机器学习实战项目&#xff1a;【从 0 到 1 落地】机器学习实操项目目录&#xff1a;覆盖入门到进阶&#xff0c;大学生就业 / 竞赛必备 文章目录一、决策树的基本流程&#…

(论文速读)从语言模型到通用智能体

论文题目&#xff1a;From Multimodal LLMs to Generalist Embodied Agents: Methods and Lessons&#xff08;从多模式大型语言模型到多面手具身代理:方法和教训&#xff09;会议&#xff1a;CVPR2025摘要&#xff1a;我们研究了多模态大型语言模型(Multimodal Large Language…