作业--day32

机械臂

#include <myhead.h>#define PORT 8888
#define IP "192.168.125.59"int main(int argc, const char *argv[])
{int sfd = socket(AF_INET, SOCK_STREAM, 0);if(sfd == -1){perror("socket error");return -1;}int reuse = -1;if(setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) == -1){perror("setsockopt error");return -1;}struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(PORT);sin.sin_addr.s_addr = inet_addr(IP);if(connect(sfd, (struct sockaddr *)&sin, sizeof(sin)) == -1){perror("connect error");return -1;}puts("连接成功");char rbuf[5] = {0xff, 0x02, 0x00, 0x00, 0xff};unsigned char bbuf[5] = {0xff, 0x02, 0x01, 0x00, 0xff};while(1){char c = fgetc(stdin);switch(c){case 'W':case 'w':{rbuf[3] += 2;if(rbuf[3] > 90){rbuf[3] = 90;}send(sfd, rbuf, sizeof(rbuf), 0);}break;case 'S':case 's':{rbuf[3] -= 2;if(rbuf[3] < -90){rbuf[3] = -90;}send(sfd, rbuf, sizeof(rbuf), 0);}break;case 'A':case 'a':{bbuf[3] += 2;if(bbuf[3] > 180){bbuf[3] = 180;}send(sfd, bbuf, sizeof(bbuf), 0);}break;case 'D':case 'd':{if(bbuf[3] < 2){bbuf[3] = 0;}else{bbuf[3] -= 2;}send(sfd, bbuf, sizeof(bbuf), 0);}}if(c == 'e' || c =='E'){break;}}close(sfd);return 0;
}

基于UDP的tftp文件下载

#include <myhead.h>#define PORT 69
#define IP "192.168.125.59"int down(const char *);
int up(const char *);int main(int argc, const char *argv[])
{while(1){system("clear");//打印菜单puts("***************功能**************");puts("*************1. 下载*************");puts("*************2. 上传*************");puts("*************3. 退出*************");int choose = -1;char filename[128] = "";scanf("%d", &choose);switch(choose){case 1:{printf("输入文件名>>");scanf(" %[^\n]", filename);down(filename);}break;case 2:{printf("输入文件名>>");scanf(" %[^\n]", filename);up(filename);}break;case 3:return 0;default:puts("输入错误");}}return 0;
}int down(const char *filename){int cfd = socket(AF_INET, SOCK_DGRAM, 0);if(cfd == -1){perror("socket error");return -1;}char buf[516];bzero(buf, sizeof(buf));//设置为下载(读)操作buf[1] = 1;//将文件名加入协议包中strcpy(buf+2, filename);//模式char mod[6] = "octet";//将模式字符串加入协议包中strcpy(buf+2+strlen(filename)+1, mod);//统计协议包字节数总大小int size = 2+strlen(filename)+1+strlen(mod)+1;struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(PORT);sin.sin_addr.s_addr = inet_addr(IP);socklen_t socklen = sizeof(sin);if(sendto(cfd, buf, size, 0, (struct sockaddr *)&sin, sizeof(sin)) == -1){perror("sendto error");return -1;}puts("请求成功");int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0664);while(1){bzero(buf, sizeof(buf));int res = -1;if((res = recvfrom(cfd, buf, sizeof(buf), 0, (struct sockaddr *)&sin, &socklen)) == -1){perror("recvfrom error");return -1;}if(buf[1] == 3){if(res < 516){write(fd, buf+4, res-4);buf[1] = 4;sendto(cfd, buf, 4, 0, (struct sockaddr *)&sin, sizeof(sin));break;}else{write(fd, buf+4, 512);buf[1] = 4;sendto(cfd, buf, 4, 0, (struct sockaddr *)&sin, sizeof(sin));}}else{puts("未知错误");close(fd);close(cfd);return -1;}}close(fd);close(cfd);return 0;
}
int up(const char *filename){
}

在这里插入图片描述

思维导图

在这里插入图片描述

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

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

相关文章

SiLM5350MDBCA-DG车规级隔离驱动芯片,我们能为汽车智能提供什么?

SiLM5350MDBCA-DG是一款适用于IGBT、MOSFET的单通道 隔离门极驱动器&#xff0c;具有10A拉电流和10A灌电流驱动能 力。提供内部钳位功能&#xff0c;可单独控制 上升时间和下降时间。 在 SOP8 封 装 中 具 有 3000VRMS 隔 离 耐 压 &#xff08; 符 合 UL1577&#xff09;。 与…

Koa.js 入门手册:洋葱模型插件机制详解以及常用中间件

前言 Nodejs 提供了 http 能力&#xff0c;我们通过如下代码可以快速创建一个http server服务 const http require(http);http.createServer((req, res) > {res.write(hello\n);res.end();}).listen(3000);使用nodejs提供的原生能力启动一个http server并不麻烦&#xff…

P2P网络下分布式文件共享场景的测试

P2P网络介绍 P2P是Peer-to-Peer的缩写&#xff0c;“Peer”在英语里有“对等者、伙伴、对端”的意义。因此&#xff0c;从字面意思来看&#xff0c;P2P可以理解为对等网络。国内一些媒体将P2P翻译成“点对点”或者“端对端”&#xff0c;学术界则统一称为对等网络(Peer-to-Pee…

飞天使-jumpserver-docker跳板机安装

文章目录 jumpserverdocker 更新到最新下载安装包mysql启动mysql 命令 验证字符集,创建数据库使用jumpserver 进行连接测试 redis部署jumpserver 写入变量建jumpserver 容器正确输出登录验证 jumpserver 基础要求 硬件配置: 2 个 CPU 核心, 4G 内存, 50G 硬盘&#xff08;最低…

2018年第七届数学建模国际赛小美赛A题空中加油飞行计划解题全过程文档及程序

2018年第七届数学建模国际赛小美赛 A题 空中加油飞行计划 原题再现&#xff1a; 太平洋中部一个小岛上的居民被自然灾害困住。救援人员需要派遣一架轻型飞机运送少量急救药品到岛上&#xff0c;并运送一名重伤者到医疗基地求救。岛上有一个无人值守的简易机场&#xff0c;可以…

React基础巩固日志1

书写了一篇vue3的基础构建之后&#xff0c;不能带着各位一起学习vue3了&#xff0c;因为我要面试上海的前端岗位了&#xff0c;所以从现在开始&#xff0c;我要带着大家一起学习React了。 以下是我使用react书写的要掌握的react的知识点&#xff1a; ** ** 那么下面我们就一一通…

钡铼无线R10A工业级路由器在工业机器人领域的创新应用

随着工业机器人的普及&#xff0c;对于高可靠性和高稳定性的网络接入设备的需求也越来越大。传统的有线网络虽然稳定&#xff0c;但在现场布置和维护上面临很多困难&#xff0c;而无线网络虽然方便&#xff0c;但受到信号干扰和传输距离限制等问题的影响。如何解决这些问题&…

解决docker alpine /bin/sh: ./main: not found

解决docker alpine /bin/sh: ./main: not found golang中编译之后的二进制文件部署在alpine镜像中出现了not found问题解决这种情况是因为动态链接库位置错误导致的&#xff0c;alpine镜像使用的是musl libc而不是gun libc。因而动态链接库的位置不一致。在基础镜像内执行&…

DS排序--快速排序

Description 给出一个数据序列&#xff0c;使用快速排序算法进行从小到大的排序 排序方式&#xff1a;以区间第一个数字为枢轴记录 输出方式&#xff1a;每一步区间排序&#xff0c;都输出整个数组 –程序要求– 若使用C只能include一个头文件iostream&#xff1b;若使用C…

pytorch文本分类(三)模型框架(DNNtextCNN)

pytorch文本分类&#xff08;三&#xff09;模型框架&#xff08;DNN&textCNN&#xff09; 原任务链接 目录 pytorch文本分类&#xff08;三&#xff09;模型框架&#xff08;DNN&textCNN&#xff09;1. 背景知识深度学习 2. DNN2.1 从感知器到神经网络2.2 DNN的基本…

人工智能辅助下的人工心脏:未来医疗的奇迹

导言 人工智能在医学领域的应用不断创新&#xff0c;其中人工心脏作为医疗工程的重要方向&#xff0c;将为心血管疾病患者带来新的治疗可能性。本文将深入研究人工智能辅助下的人工心脏技术&#xff0c;其原理、应用以及对未来医疗的影响&#xff0c;探讨人工心脏的发展历程、面…

apache shiro 反序列化漏洞解决方案

apache shiro 反序列化漏洞解决方案 反序列化漏洞解决方案产生原因解决方案1&#xff1a;1.升级shiro至最新版本1.7.1解决方案2&#xff1a;修改rememberMe默认密钥&#xff0c;生成随机密钥。 反序列化漏洞解决方案 反序列化漏洞介绍 序列化&#xff1a;把对象转换为字符串或…