3.14网络编程

TCP机械臂调试代码

#include<myhead.h>
#include <termios.h>
#define SER_PORT 8888               //服务器端口号
#define SER_IP "192.168.117.36"      //服务器IP
#define CLI_PORT 9000              //客户端端口号
#define CLI_IP "192.168.141.134"      //客户端IPint main(int argc, const char *argv[])
{//1、创建用于通信的套接字文件描述符int cfd = socket(AF_INET, SOCK_STREAM, 0);if(cfd == -1){perror("socket error");return -1;}printf("%d cfd = %d\n",__LINE__, cfd);          //3//重用int reuse = 1;if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1){perror("setsockopt");return -1;}printf("重用成功\n");/*//2、绑定 客户端可不写// 填充struct sockaddr_in cin;cin.sin_family = AF_INET;cin.sin_port = htons(CLI_PORT);cin.sin_addr.s_addr = inet_addr(CLI_IP);// 绑定if(bind(cfd, (struct sockaddr*)&cin, sizeof(cin)) == -1){perror("bind");return -1;}printf("%d bind success\n",__LINE__);*///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);   //ip地址// 连接if(connect(cfd, (struct sockaddr*)&sin, sizeof(sin))==-1){perror("connect");return -1;}printf("%d connect success\n",__LINE__);//4、数据收发char rbuf[5] = {0xff, 0x02, 0x00, 0x00, 0xff};//red -90--0--90unsigned char ybuf[5] =  {0xff, 0x02, 0x01, 0x00, 0xff};//blue 0--90--180//发送给服务器当做初始值send(cfd, rbuf, sizeof(rbuf), 0);sleep(1);send(cfd, ybuf, sizeof(ybuf), 0);struct termios old,new;tcgetattr(STDIN_FILENO,&old);new=old;new.c_lflag&=~(ICANON);tcsetattr(STDIN_FILENO,TCSANOW,&new);//实现getchar()直接吸入字符char key = 0;while(1){key = getchar();if((key|32) == 'w'){rbuf[3] +=10;//10度偏移if(rbuf[3]>=90){rbuf[3] = 90;}printf("__%#x^w^\n",rbuf[3]);send(cfd, rbuf, sizeof(rbuf), 0);}else if((key|32) == 's'){rbuf[3] -=10;//10度偏移if(rbuf[3]<=-90){rbuf[3] = -90;}printf("__%#x^s^\n",rbuf[3]);send(cfd, rbuf, sizeof(rbuf), 0);}else if((key|32) == 'd'){ybuf[3] +=10;//10度偏移if(ybuf[3]>=180){ybuf[3] = 180;}printf("__%#x^d^\n",ybuf[3]);send(cfd, ybuf, sizeof(ybuf), 0);}else if((key|32) == 'a'){ybuf[3] -=10;//10度偏移if(ybuf[3]<=0){ybuf[3] = 0;}printf("__%#x^a^\n",ybuf[3]);send(cfd, ybuf, sizeof(ybuf), 0);}else if((key|32) == 'q'){printf("__退出\n");break;}elseprintf("输入错误,请重新输入\n");}//5、关闭套接字
close(cfd);return 0;
}

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

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

相关文章

基于SpringBoot的“家政服务管理平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“家政服务管理平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 用户注册界面图 服务信息界面…

【Cookie和Session辨析】

1.cookie 1.1什么是cookie Cookie 是一种在客户端&#xff08;通常是 Web 浏览器&#xff09;和服务器之间传递信息的机制&#xff0c;用于在客户端存储少量的数据。它由服务器发送到客户端浏览器&#xff0c;然后浏览器会将这些数据存储在本地&#xff0c;并在后续的请求中将…

SpringBoot+vue3打造企业级一体化SaaS系统

SpringBootvue3打造企业级一体化SaaS系统 简介&#xff1a;    全面提升前后端技术水平&#xff0c;独立完成全栈项目开发能力&#xff0c;快速进击全栈工程师&#xff0c;最终在面试中脱颖而出。整合后端主流技术&#xff08;Spring Boot、物理数据库隔离、加载动态权限、多…

深入了解volatile、内存屏障与happens-before规则

1、编译器优化的重排序。编译器在不改变单线程程序语义的前提下&#xff0c;可以重新安排语句的执行顺序&#xff1b;2、指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据依赖性&#xff0c;处理器可以改变语句对应机器指令的执行顺序…

【C++ 】stack 和 queue

1. 标准库中的stack stack 的介绍&#xff1a; 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行 元素的插入与提取操作 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作为其…

LabVIEW电磁阀特性测控系统

LabVIEW电磁阀特性测控系统 电磁阀作为自动化工程中的重要组成部分&#xff0c;其性能直接影响系统的稳定性和可靠性。设计一种基于LabVIEW的电磁阀特性测控系统&#xff0c;通过高精度数据采集和智能化控制技术&#xff0c;实现电磁阀流阻、响应时间及脉冲特性的准确测量和分…

接口的回调

接口是引用型变量 接口回调技术&#xff1a;把实现该接口的类的实例引用赋给接口变 量&#xff08;存放对象的引用&#xff09;→接口变量可调用被类重写的接口方法。 ★注意★&#xff1a;接口com无法调用类中非接口方法

MySQL基础---SQL语句2(WHERE、AND、OR、ORDER BY、COUNT)

1. WHERE 子句 1. 语法 WHERE 子句用于限定选择的标准 在 slelece、update、delete 语句中&#xff0c;皆可使用 WHERE 子句来限定选择的标准 -- 查询语句 select 列名称 form 表名称 where 列 运算符 值-- 更新语句 update 列名称 form 列新值 where 列 运算符 值-- 删除语句…

数据库中的数据

从数据库查到的数据&#xff0c;是这种JSON格式,建和值都是双引号包裹 [[{id: 21,name: why,password: e10adc3949ba59abbe56e057f20f883e,createAt: 2024-03-11T06:55:35.000Z,updateAt: 2024-03-11T06:55:35.000Z}],[id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,name VARCH…

3.2 RK3399项目开发实录-初次使用的环境搭建(物联技术666)

通过百度网盘分享的文件&#xff1a;嵌入式物联网单片… 链接:https://pan.baidu.com/s/1Zi9hj41p_dSskPOhIUnu9Q?pwd8qo1 提取码:8qo1 复制这段内容打开「百度网盘APP 即可获取」 1. 用户和密码 1.1. Ubuntu Desktop 系统 Ubuntu Desktop 系统开机启动后&#xff0c;自动登录…

图片或视频充当网页背景+过渡动画

这是目前的主页预览图。上一个版本带有学校logo&#xff0c;根据比赛规则&#xff0c;删掉了学校logo。 图片背景 也就是将图片作为背景。 这个需求产生的场景是&#xff1a;如果直接用img标签显示界面左上角的logo&#xff0c;那么鼠标右键是可以直接选中图片的&#xff0c…

DirectPV的故事

2020 年&#xff0c;MinIO 为基于 Kubernetes 的 MinIO 存储部署实施了直接持久卷 &#xff08;DirectPV&#xff09;。DirectPV 类似于 LocalPV&#xff0c;但动态预配。 在这篇文章中&#xff0c;我将介绍创建 DirectPV 的有趣设计决策。但在深入了解设计细节之前&#xff0c…