阿里云esc使用体验

简介: 阿里云飞天计划使用感受

本人介绍:
本人为长春理工大学人工智能学院20级机器人工程专业学生,最近由于长春疫情返回家中上网课,由于在自学TCPsocket通信中遇到一个问题,关于如何在公网中实现TCP通信,于是查阅资料后知道要想实现公网TCP通信就得有一个公网域名,于是我打算申请一个云服务器,用这个云服务器作为中转站,即可实现TCPsocket公网通信,于是在寻找云服务器的过程中我了解到了阿里云开发者飞天计划。
接下来我说一下在使用阿里云服务器的过程中遇到的问题。由于我使用云服务器主要是做TCP服务端,所以这就涉及到了TCP协议,以及IP和端口,在端口上面我是吃了大亏的,之前把程序写好后运行一直报错,一开始以为是端口防火墙问题,重新设置了很多次安全组以及防火墙,但一直没能解决问题,后来才发现原来是从Linux虚拟机复制粘贴过来的时候格式出了问题。然后我选择用Xshell将Linux虚拟机的文件传到windows,然后通过Xshell远程登陆阿里云,将文件传到云服务器上,再次编译,成功运行!
通过本次的实践,我掌握了云服务器的基本操作,加深了我对Linux命令行的理解,并且对TCP协议有了更深的认识,以后无论是学习UDP或者HTTP都能更快速的上手,接下来展示一下我做的TCP公网通信用阿里云服务器做转发,一个客户端为LinuxQT上位机,另外一个客户端为esp8266,通过qt上位机控制led灯的开闭。

客户端代码:

include "stdio.h"

include "stdlib.h"

include "assert.h"

include "string.h"

include "sys/types.h"

include "sys/socket.h"

include "arpa/inet.h"

include "netinet/in.h"

include "unistd.h"

include "pthread.h"

int ret;
int i=0;
int c_fd[2];
struct sockaddr_in saddr,caddr;
pthread_t t1;
pthread_t t2;
char BUFF1[256];
char BUFF2[256];
int read_1;
int read_2;
int param=100;

void thread1(void arg)
{
while(1)

{
memset(BUFF1,0,sizeof(BUFF1));
printf("Client1 address is %s\n",inet_ntoa(caddr.sin_addr));
read_1=read(c_fd[0],BUFF1,255);
if(read_1==-1) {printf("read client1 is error");}
else { printf("I read client1:%s\n",BUFF1);
write(c_fd[1],BUFF1,strlen(BUFF1));
}

}

}

void thread2(void arg)
{

while(1)
{
memset(BUFF2,0,sizeof(BUFF2));
printf("client2 address is %s\n",inet_ntoa(caddr.sin_addr));
read_2=read(c_fd[1],BUFF2,255);
if(read_2==-1) {printf("read client2 is error");}
else { printf("I read client2:%s\n",BUFF2);
write(c_fd[0],BUFF2,strlen(BUFF2));
}

}

}

int main()
{

    int sockfd=socket(AF_INET,SOCK_STREAM,0);
    assert(sockfd!=-1);

// struct sockaddr_in saddr,caddr;

    memset(&saddr,0,sizeof(saddr));
    saddr.sin_family=AF_INET;
    saddr.sin_port=htons(8000);
    saddr.sin_addr.s_addr=inet_addr("172.17.124.48");
    int res=bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));
    assert(res!=-1);
    res=listen(sockfd,5);
    assert(res!=0);

    int len=sizeof(caddr);


    while(1)
    {
       if(i==0)
       {
       c_fd[i]=accept(sockfd,(struct sockaddr*)&caddr,&len);
            if(c_fd[i]<0){continue;}

i=1;

            printf("I am client1\n");
       }else {

          c_fd[i]=accept(sockfd,(struct sockaddr*)&caddr,&len);
         if(c_fd[i]<0){continue;}
          i=2;
          printf("I am client2\n");
     }

if(c_fd[0]==-1)

  {printf("client1 is connect error");}
    else
    { ret=pthread_create(&t1,NULL,thread1,(void *)&param);
    assert(ret!=-1);
    }

if(c_fd[1]==-1)

    {printf("client2 is connect error");}
    else
    { ret =pthread_create(&t2,NULL,thread2,(void *)&param);assert(res!=-1);}





    }

    return 0;

}

qt上位机:
S3O(U$)ZD)(~QX7O7ST9O(C.png
运行效果:

~~76E}}Y2S7WUSGI5`SPIZE.png

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
存储 算法 安全
搬运5个非常小众的实用软件
本文推荐5款小众但实用的软件:Vbook电子书管理,支持多格式解析与云端同步;AutoDarkMode智能切换系统主题,适配多种设备;燃精灵检测微信空号,助力精准营销;7-Zip高效压缩工具,采用LZMA2算法;Wondershare Recoverit数据修复专家,覆盖多种存储介质。每款软件都独具特色,满足不同需求。
374 1
|
存储 SQL 分布式计算
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
301 0
|
SQL Oracle 关系型数据库
使用PL/SQL Developer给Oracle生成漂亮的数据库说明文档
使用PL/SQL Developer给Oracle生成漂亮的数据库说明文档
752 0
使用PL/SQL Developer给Oracle生成漂亮的数据库说明文档
|
人机交互 芯片
西门子S7-200 SMART的功能和特点
西门子S7-200 SMART是西门子公司针对中国小型自动化市场客户需求设计研发的一款高性价比小型PLC产品。S7-200 SMART CPU将微处理器、集成电源、输入输出电路组合到一个设计紧凑的外壳中,已形成功能强大的小型plc。面板包含电源接线端子、直流24V电源输出端子、数字量输入输出接线端子、CPU状态指示灯、IO状态指示灯、存储卡插槽、以太网接口、RS485接口等。
西门子S7-200 SMART的功能和特点
|
XML Java Android开发
Android8.1 MTK平台 SystemUI源码分析之 网络信号栏显示刷新(下)
Android8.1 MTK平台 SystemUI源码分析之 网络信号栏显示刷新(下)
597 0
|
存储 算法 C#
C# | 二分查找算法的实现
二分查找法一种在**有序数组**中查找目标值的算法。划重点——“**有序**”,与需要遍历整个数组的查询算法不同,二分查找法通过将数组分成两部分来快速定位目标值所在的位置。 它的主要好处在于它的效率很高。因为它能够通过每次排除一半的元素来快速缩小搜索范围,因此在大型数据集上使用二分查找法可以显著提高查找速度。
325 0
|
人工智能 边缘计算 算法
阿里云AIoT 发布城管AI一体机 为城市执法提供智能保障
1月18日,阿里云AIoT正式发布城管AI一体机,该产品根据国标定义的城管违章事件构建AI算法模型,加上城管智能服务引擎云边协同套件,聚焦城市违章事件,为柔性执法、非现场执法提供边缘计算能力。
841 1
阿里云AIoT 发布城管AI一体机 为城市执法提供智能保障
|
机器学习/深度学习
MNIST机器学习入门+tensorboard
MNIST机器学习入门+tensorboard
177 0
if-else if与switch的区别
if-else if与switch的区别
424 0
|
Java 关系型数据库 MySQL
linux云服务器下运行web项目完整步骤
linux云服务器下运行web项目完整步骤

热门文章

最新文章