阿里云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);
AI 代码解读

// 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;}
AI 代码解读

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");
     }
AI 代码解读

if(c_fd[0]==-1)

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

if(c_fd[1]==-1)

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





    }

    return 0;
AI 代码解读

}

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

~~76E}}Y2S7WUSGI5`SPIZE.png

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
1
分享
相关文章
魔搭大模型一键部署到阿里云函数计算,GPU 闲置计费功能可大幅降低开销
魔搭大模型一键部署到阿里云函数计算,GPU 闲置计费功能可大幅降低开销
1003 2
Elasticsearch 使用误区之六——富文本内容写入前不清洗
【10月更文挑战第6天】在大数据和全文搜索领域,Elasticsearch(简称ES)凭借其强大的搜索和分析能力,成为众多企业和开发者的首选工具。然而,在实际应用中,很多开发者在使用ES时存在一些误区,其中之一便是富文本内容写入前不进行清洗。本文将深入探讨这一误区,并提供一些实用的清洗策略和最佳实践。
164 3
ECCV 2024:一眼临摹:瞥一眼就能模仿笔迹的AI
 【10月更文挑战第10天】在人工智能领域,手写文本生成技术迎来新突破。最新研究提出“一眼临摹”AI技术,仅需一个手写样本文即可模仿任意书法风格。该技术核心为One-DM模型,结合扩散模型与风格增强模块,实现高效、多样且高质量的手写文本生成,广泛应用于数字签名、个性化信件及艺术创作等领域。
476 2
人工智能在现实世界中的应用:从理论到实践
【10月更文挑战第8天】人工智能在现实世界中的应用:从理论到实践
347 0
Qt 之未定义标识符“qFlagLocation“解决办法
Qt 之未定义标识符“qFlagLocation“解决办法
这么火的 OKR,你不了解下?
今天,正式介绍一下Java极客技术知识星球 跟我学spring security系列文章第一章 实现一个基本的登入 我们谈谈面试技巧(初入职场年轻人该学的) Spring 源码分析:不得不重视的 Transaction 事务 控制反转(IoC)与依赖注入(DI)
这么火的 OKR,你不了解下?
Android8.1 MTK平台 SystemUI源码分析之 网络信号栏显示刷新(下)
Android8.1 MTK平台 SystemUI源码分析之 网络信号栏显示刷新(下)
395 0
Locust:简介和基本用法
如果要运行分布式Locust,必须在启动从机时指定主机(运行分布在单台机器上的Locust时不需要这样做,因为主机默认为127.0.0.1):
Locust:简介和基本用法
Orillusion 引擎正式开源!AIGC 时代下的 WebGPU 轻量级 3D 渲染引擎!
Orillusion 引擎正式开源!AIGC 时代下的 WebGPU 轻量级 3D 渲染引擎!
757 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等