大家好,我是一名大四的学生,所学专业是自动化。目前正在做毕业设计,由于我的题目需要用到远程通信,把下位机采集到的数据发送到上位机,从而实现上位机的远程监控。经同学介绍,阿里云有个“飞天加速计划·高校学生在家实践”的活动,可以免费领取一个属于自己的云服务器,可在其基础上进行二次开发。
我领取的云服务器的2核cpu、2G内存和1M宽带,操作系统是linux。领取云服务器后,会有两个IP地址,一个是公网IP,另一个是内网IP。公网的IP通过自己的电脑是可以ping得通的,内网IP是ping不通的。
在使用阿里云服务器的过程中,我还使用Xshell和filezilla这两个软件,Xshell可以进行远程连接云服务器,filezilla可以把我们电脑的文件传输给云服务器。远程通信协议采用的是TCP协议,通过filezilla把编写好的TCP服务器的程序传输到云服务器上,再利用Xshell远程连接到云服务器,在云服务器中跑TCP服务器的程序。在这里我们要注意一点,我们TCP服务器里写的IP地址是我们云服务器的内网IP地址,而不是公网IP地址,但是我们TCP客户端发起连接请求的时候写的是云服务器的公网IP地址。这也是我前面为什么说可以ping通云服务器的公网IP,却不能ping通内网IP。其实云服务器的公网IP与内网IP已经是映射好的了,只要我们访问公网IP就行了。
在云服务器上已经跑了我们的TCP服务器的程序,可以是我们的TCP客户端还是无法与服务器连接,出现这个问题,那就是我们还没有配置我们云服务器的安全组,这时候就需要我们配置安全组中的端口范围与授权对象,只要把端口范围设置为1/65535,授权对象设置为0.0.0.0/0就可以了。我写的TCP服务器的功能只有一个,就是把TCP客户端A发送的数据转发给连接到TCP服务器的所有TCP客户端。只要设备可以联网,就可以与云服务器进行连接,这样就可以实现两台异地的设备通过云服务器来实现远程通信。
我使用stm32单片机作为下位机,通信模块是esp8266,esp8266工作在STA模式,从而与云服务器进行TCP连接,把数据发送给上位机;使用labview作为上位机对下位机发送的数据进行解析和显示。阿里云服务器在着整个过程中就是作为我的上位机与下位机远程通信的中转站,负责把数据发送给对方。
也正是因为有“飞天加速计划·高校学生在家实践”的活动,并且免费提供一个云服务器给我,让我有机会了解到云服务器的强大与便捷之处,同时也学习的了很多计算机网络的知识。