TCP和UDP基础

tcp服务器及客户端链接

ucd服务器及客户端

机械臂控制
 

#include<myhead.h>
#define SER_PORT 8888
#define SER_IP "192.168.117.92"

int main(int argc, const char *argv[])
{
    //创建套接字
    int cfd=socket(AF_INET,SOCK_STREAM,0);
    if(cfd==-1)
    {
        perror("cfd erroe\n");
        return -1;
    }
    printf("%d success cfd=%d\n",__LINE__,cfd);
    //连接服务端ip地址及端口
    struct sockaddr_in sin;
    sin.sin_family=AF_INET;
    sin.sin_port=htons(SER_PORT);
    sin.sin_addr.s_addr=inet_addr(SER_IP);
    if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
    {
        perror("connect error\n");
        return -1;
    }
    printf("connect success\n");
    //收发数据
    char red[5]={0xff,0x02,0x00,0x00,0xff};//红色臂容器
    unsigned char blue[5]={0xff,0x02,0x01,0x00,0xff};//蓝色臂容器
    //将数据发送给服务器以初始化
    send(cfd,red,sizeof(red),0);
    sleep(1);
    send(cfd,blue,sizeof(blue),0);
    char key=0;
    while(1)
    {
        scanf("%c",&key);
        getchar();
        switch(key)
        {
        case'w':case'W':
            {
                red[3]+=2;
                if(red[3]>=90)
                {
                    red[3]=90;
                }
                send(cfd,red,sizeof(red),0);
            }break;
        }
        switch(key)
        {
        case's':case'S':
            {
                red[3]-=2;
                if(red[3]<=-90)
                {
                    red[3]=-90;
                }
                send(cfd,red,sizeof(red),0);
            }break;
        }
        switch(key)
        {
        case'A':case'a':
            {
                blue[3]+=2;
                if(red[3]>=90)
                {
                    red[3]=90;
                }
                send(cfd,blue,sizeof(blue),0);
            }break;
        }
        switch(key)
        {
        case'd':case'D':
            {
                blue[3]-=2;
                if(red[3]<=0)
                {
                    red[3]=0;
                }
                send(cfd,blue,sizeof(blue),0);
            }break;
        }
        switch(key)
        {
        case'q':case'Q':
                    goto END;
        }
    }
END:
    close(cfd);
        return 0;
}

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

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

相关文章

Python环境下基于1D-CNN、2D-CNN和LSTM的一维信号分类

以简单的西储大学轴承数据集为例&#xff0c;随便你下载几个信号玩耍吧&#xff0c;我选了10个信号&#xff0c;分别求为正常状态&#xff0c;内圈&#xff08;轻、中和重度损伤&#xff09;&#xff0c;外圈&#xff08;轻、中和重度损伤&#xff09;&#xff0c;滚动体&#…

鼎阳SDS6204示波器EPICS IOC的搭建

三年前曾写过这个文&#xff1a; 鼎阳SDS6204示波器的EPICS IOC调试 文章里有EPICS网站设备IOC搭建的指南&#xff0c;具体搭建IOC的步骤就没详细写了&#xff0c;几年后重新搭建时发现还是费了些力气才搭建起来&#xff0c;因此写此文记录下手把手的过程方便自己以及EPICS的初…

Matlab|基于改进粒子群算法的混合储能系统容量优化

目录 主要内容 部分程序 下载链接 主要内容 为了调高风光互补发电储能系统的经济性&#xff0c;减少其运行费用&#xff0c;研究风光互补发电储能系统的容量优化配置模型&#xff0c;探讨粒子群算法的改进及混合储能容量优化方法。首先通过对全生命周期费用静态模型…

【Sass】1px分割线 + 缩进分割线

效果图 1. 亮色模式效果 2. 暗色模式效果 设计思路 配色使用grey色 优点&#xff1a;无论在暗色模式还是亮色模式都可以看清楚分割线 使用after,before 伪元素绘制线条&#xff0c;并压缩线条transform: scaleY(.25) 注意事项 必须确保父级有宽高父级定位必须为position: r…

Python Web开发记录 Day13:Django part7 Ajax入门与案例(任务管理)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、Ajax入门①简介②工作原理③优点④缺点⑤使用…

【理解】Redis 中的事务及持久化方式

目录 相关传送门 1. Redis 中的事务 2. Redis 持久化 2.1 RDB 方式 2.1.1 RDB手动 2.1.2 RDB自动 2.2 AOF方式 2.2.1 AOF执行过程 2.2.2 AOF写数据的策略 2.2.3 AOF相关配置 2.2.4 AOF写数据遇到的问题 2.2.5 AOF重写 2.2.6 AOF重写规则 2.2.7 AOF重写方式 2.2.8…

java 面向对象--equals方法

Object 类的使用 类 java.lang.Object是类层次结构的根类&#xff0c;即所有其它类的父类。每个类都使用 Object 作为超类。 Object类型的变量与除Object以外的任意引用数据类型的对象都存在多态引用 method(Object obj){…} //可以接收任何类作为其参数 Person o new Person…

数据驱动校园管理:山海鲸可视化软件看板搭建记

随着信息化时代的到来&#xff0c;校园管理也逐渐向数字化、可视化转型。作为一名数据分析师&#xff0c;我有幸参与了使用山海鲸可视化软件搭建校园管理可视化看板的项目&#xff0c;山海鲸可视化软件是近些年新崛起的一款可视化产品&#xff0c;支持免费可视化编辑、私有化部…

蓝桥杯物联网竞赛_STM32L071_12_按键中断与串口中断

按键中断&#xff1a; 将按键配置成GPIO_EXTI中断即外部中断 模式有三种上升沿&#xff0c;下降沿&#xff0c;上升沿和下降沿都会中断 external -> 外部的 interrupt -> 打断 trigger -> 触发 detection -> 探测 NVIC中将中断线ENABLE 找接口函数 在接口函数中写…

【边缘智能】Jetson板卡上安装QT5与OpenCV集成

学习《OpenCV应用开发&#xff1a;入门、进阶与工程化实践》一书 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; 安装QT5与QT Creator 如果只是简单的使用QT的GUI库&#xff0c;没有其它要求&#xff0c;其实特别容易&#xff0c;一行命令行…

Flutter-底部弹出框(Widget层级)

需求 支持底部弹出对话框。支持手势滑动关闭。支持在widget中嵌入引用。支持底部弹出框弹出后不影响其他操作。支持弹出框中内容固定头部和下面列表时&#xff0c;支持触摸头部并在列表不在头部的时候支持滑动关闭 简述 通过上面的需求可知&#xff0c;就是在界面中可以支持…

最细致最简单的 Arm 架构搭建 Harbor

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; ARM离线版本安装 官方提供了一个 arm 版本&#xff0c;但是好久都没更新了&#xff0c;地址&#xff1a;https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新&#xff0c;我看…