socket TCP:在阿里云ESC上搭建自己的TCP服务端程序

如果已经购买云服务器,会上传文件到服务器,并且可以连接到服务器执行命令行,则直接阅读 第3部分(记得提前配置安全组)

1 背景介绍

在日常单片机/安卓开发过程当中,经常有一些小项目会用到C/S架构。比如,想要实现两个单片机想要实现远程通信,那么就不得不自己搭建一个服务器来实现转发(或许有其他方法)。这样两个单片机就可以通过一些通信模块(WIFI,GPRS等)来实现相互通信了。当然,我们可以在调试的过程中,完全可以利用自己的电脑搭建一个局域网内的通信。但是在实际中我们可能更加需要非局域网的通信,因此自己搭建一个阿里云(或者其他的)就很棒了。
以下内容均是自己(本科生)的一些理解,比较适合首次接触相关知识的人参考。而且自己刚接触这方面的知识,可能实际开发出来的东西比较简陋,也可能解释不正确,还请急时指出。

2 开发准备工作

  1. socket的基本知识,并且已经在本地实现相关功能。(如未实现,可先看TCP的本地实现方法
  2. 软件:FileZilla
  3. 软件:Xshell
    以上软件的安装包我已全部打包,点击下载
  4. 购买一个云服务器并安装操作系统(以下以阿里云为例)

2.1购买云服务器并安装操作系统(以阿里云为例)

1.如果是学生想要购买的话,比较便宜,大家可以直接去官网购买。为了方便我放个链接
2.注意:进入这个画面以后,选择需要注意的两个地方。第一,选择云服务器ECS,第二,地域那里选择离自己比较近的即可。然后按照步骤购买即可。
socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
3.进入控制台。在控制台左侧选择 云服务器ECS 再选择,实例,在实例列表中即可看到你的服务器,其中IP地址下面有两个IP地址,公网IP即为你可用自己电脑访问的IP地址。
socket TCP:在阿里云ESC上搭建自己的TCP服务端程序

2.2 更换系统

  1. 上图中服务器右边操作那里点击:更多-更换系统盘(需要先停止服务器运行)
  2. 找到镜像市场,选一个镜像LNMP环境(CentOS7.x Nginx PHPx.x)然后点击同意即可。
  3. 弹出的页面中输入自己喜欢的登录密码,在页面右下角点击确定更换,稍等片刻系统即更新完。

2.3 修改安全组

  1. 打开控制台,在控制台左侧找到云服务器ESC,然后找到网络和安全-安全组,点击配置规则。
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
  2. 点击快速创建规则,选择80和443端口,授权对象写0.0.0.0/0
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
  3. 确定即可,此时在浏览器中输入公网IP即可访问。

2.4 Xshell登陆服务器

  1. 安装Xshell软件
  2. 找到实例的列表,在右侧操作一栏中选择更多-重置密码,将服务器的密码更换成你所喜欢的密码。
  3. 修改完密码后,同样在 操作一栏下选择 更多-重启
  4. 打开XSheel,选择新建,并如图配置。主机号改为自己的公网IP
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
  5. 输入用户名root
  6. 密码为刚刚改过的密码
  7. 如果是这样,表示连接成功。
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序

2.5 FTP管理

  1. 安装FileZilla,修改传输模式为主动
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
  2. 参考2.3安全组的修改,分别开放20、21端口、1024-65535端口
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
  3. 在浏览器中输入自己的公网地址,左侧选择FTP管理,按照步骤创建账户。
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
  4. 进入FileZilla,下图红色框分别写:Host:自己的公网IP,UserName:刚刚新建的FTP用户名,Password:FTP密码,端口可不填。点击快速连接。
  5. 准备部分到此结束,接下来是我们今天的主题,将自己的Server.php挂在上面

3 将写好的程序上传到服务器

  1. 打开FileZilla,并连接到自己的服务器。
  2. 将自己的程序拖到文件夹default下面即可。程序下载地址,文件cloud-server中
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
    如出现上述画面则说明已经完成。

4 在服务器上将程序运行起来

  1. 打开Xshell,并连接到自己的云服务器。
  2. 输入命令行 cd /data/wwwroot/default/socket/
  3. 此时,已经到了server.php文件所在目录,如果是直接放到default中,则输入到default即可。
  4. 输入命令行 nohup php server.php &
  5. 此时提示如下。则说明程序已经挂在了后台运行,进程号为5553,关闭Xshell,进行测试即可。
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
  6. 我们看一下进程里有没有,输入命令行ps -x
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序

5 测试运行结果

  1. 然后,我们就可以连接过来进行通信啦。测试一下,打开电脑CMD,然后运行一下客户端程序,程序里面把连接的IP地址改为自己的"公网地址",端口号改为"8080"(以server.php中端口号为准)。
  2. 运行结果如下,运行client.php。 下载链接(colud-server)
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序
  3. 我们换一种测试方式,比较常用的网络调试工具:网络调试助手。打开以后按照如下设置:1. TCP Client、2. 公网IP、3. 8080(以server.php为准)
  4. 发送数据:helloword
  5. 结果如下
    socket TCP:在阿里云ESC上搭建自己的TCP服务端程序

到这里,我们已经将程序挂在了上面,如果想要什么特殊功能只需要修改server.php并重新上传并运行即可。可以通过kill xxx(进程号)来关闭进程,然后再重新运行。

以上内容是我第一次尝试,可能会有很多问题,但是至少实现了我想要的功能,虽然比较简陋,但是我可以在平时利用他完成一些简单的“玩具”。

如果大家有任何疑问,请留言(已开通邮箱提醒,会及时回复)。