阿里云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
相关文章
|
1月前
|
人工智能 自然语言处理 安全
智能体构建与进化——Agent 开源开发者沙龙·深圳站精彩回顾 & PPT 下载
近日,智能体构建与进化——Agent 开源开发者沙龙·深圳站圆满落幕。本场活动吸引了 150+ 名技术从业者深度参与,深度分享了 AgentTeams 、AgentScope 2.0 、 Nacos Skill、Blade AI、 AI Agent、UnifieModel 等相关议题,并设置了动手实操环节。
|
2月前
|
人工智能 弹性计算 运维
阿里云发布堡垒机智能运维Agent,运维交互进入自然语言新时代
支持自然语言运维,提升效率与安全双保障。
1413 2
|
10月前
|
存储 缓存 Kubernetes
Kubernetes 场景下的 StarRocks 灾备体系:Cluster Snapshot 实践解析
在 3.5 版本 中,StarRocks 推出了全新的 Cluster Snapshot 快照恢复机制,进一步完善了数据安全与灾备体系。 Snapshot 提供了一种高效、低成本、自动化的数据保护方式,显著提升系统的可用性与容灾能力,弥补了此前存算分离架构在备份与恢复方面的空缺。 当系统发生故障、误操作或区域性宕机时,Snapshot 可在分钟级完成快速恢复,最大限度减少数据丢失与业务中断风险。通过将完整集群状态进行快照化并备份至对象存储,Snapshot 简化了传统灾备方案的复杂流程,使灾难恢复更加高效与便捷。这一机制尤其适用于 金融、零售、SaaS 等对系统稳定性要求极高的关键业务场景。
|
4月前
|
存储 安全 数据管理
什么是冷数据?阿里云低成本冷数据存储解决方案
冷数据指长期保存、访问极少但具合规与历史价值的数据(如旧合同、备份等)。阿里云OSS提供标准/低频/归档/冷归档/深度冷归档五级存储,结合生命周期自动分层、数据湖分析及存算分离架构,大幅降本并保障安全合规。
918 5
|
10月前
|
JSON 缓存 数据格式
阿里巴巴 item_search 接口对接全攻略:从入门到精通
本文详解阿里巴巴1688商品搜索接口(item_search)的对接流程、参数配置与Python实现,涵盖认证签名、分页查询、错误处理及最佳实践,助力开发者高效构建采购系统与市场分析工具。
|
存储 监控 API
零基础 3 天搞定京东 / 淘宝 API 开发,从注册到调通接口全流程拆解
本文详解京东/淘宝API开发入门,涵盖账号注册、应用创建、签名生成及实战项目,助零基础开发者3天掌握电商API调用,实现商品数据获取与价格监控。
|
网络协议 关系型数据库 应用服务中间件
如何迁移网站数据到新的服务器
迁移网站数据到新服务器是一个系统化的过程,需谨慎操作以避免数据丢失或服务中断。小编为您整理发布如何迁移网站数据到新的服务器,以下是详细步骤和注意事项。
|
7月前
|
SQL 运维 监控
上线前检查清单模板及工具指南:告别手忙脚乱,实现稳定发布
上线前检查清单是避免线上事故的关键。本文提供可落地的四阶段检查模板,涵盖代码、配置、部署与协作,并通过工具化、复盘机制让清单真正生效,帮助团队建立质量护城河,将严谨流程转化为开发习惯。
|
8月前
|
数据可视化 BI
Quick BI使用案例03:让仪表板中表格列标题“各显其色”:自定义每列的表头颜色
在 Quick BI 交叉表和明细表中,所有列的表头仅支持设置统一的背景颜色。然而在实际报表开发中,常需要在仪表板中通过差异化表头样式来直观区分不同维度或指标列(例如:关键指标高亮、分类字段着色等),以提升可读性与分析效率。 本文将介绍一种在 Quick BI 仪表板中实现表格各列表头独立配色的实用方案,帮助您打造更清晰、更专业的可视化报表。