飞道的博客

小成开发日记----利用Qt/C++在腾讯云/阿里云服务器搭建TCP/IP协议实现网络通信以及Qt在linux下的安装和程序打包踩坑(详解)

582人阅读  评论(0)

作者:小成Charles
原创作品
转载请标注原创文章地址:https://blog.csdn.net/weixin_42999453/article/details/110140831

引言

最近两天一直在研究网络通信的相关编程,以前一直局限于在局域网的通信测试,因为很少做这一方面的开发就买了个服务器研究了很久,由于自身的计网基础比较差,所以也踩了不少的坑!这里开发用腾讯云的Linux centos 7 系统做案列

这是程序运行截图
程序源码下载地址:https://download.csdn.net/download/weixin_42999453/13189726

一、安装Qt准备好linux系统和linuxdeployqt

这一点很重要,linux系统可以是centos7,也可以是uanbntu,主要是将qt写好的代码编译运行然后打包成linux可执行文件,这样就可以放在服务里运行了。这里我们可以用图形界面演示,更加的直观一点,关于如何安装qt 可以参考此文章《centos7 安装QT5.12》
如果要打包可执行程序最好的方法就是用linuxdeployqt,如何使用打包参考此文章《使用linuxdeployqt在linux下进行Qt打包发布(超详细)》

安装注意以下几点:

  1. 选择linux系统不要过于的新,也不要过于的旧
  2. 高版本的Linux配高版本的Qt软件,低版本同理
  3. 第一次配置可能会缺少乱七八糟的库,缺啥就下载啥就好了
  4. linuxdeployqt在最新版本的linux上无法通过编译,所以千万不要安装最新的linux系统,LTS长期支持版本就好了
  5. 如果真的因为版本太新无法运行linuxdeployqt的话可以下载源码,更改main.cpp代码,camke生成程序,具体自行百度

二、配置服务器运行测试程序

可以去阿里云/腾讯云购买,这两家我都买过,不论是买轻量级应用服务器还是ESC云服务器都可以,前者适合搭建个人网站,一键搭建很方便,后者就是纯粹的liunx系统,光秃秃的,可以自由发挥,当然初学者的话想锻炼我推荐第二种ESC云服务器,更加灵活一点!这里以腾讯云的ESC服务器为例,一些初始化配置自由发挥啦!
这里连接服务器我用了xshell这个软件,由于我测试通信的服务器是带GUI图形化界面的,所以服务器必须先下载好界面库,具体安装参考此文章《centos7安装图形化界面图文详解》

之后就是把打包好的可执行包上传到服务器上,这里我使用的是xftp这个软件,然后运行,记得第一次运行程序之前先给程序权限打开chmod 777,大家应该都懂。

这里运行的是图形界面的程序,所以用到了xmanager这个程序去调出来界面,然后就OK啦
总结:这里用到的三个软件就是xshell,xftp,xmanager全家桶

三、关于公网ip地址监听问题

我一开始监听的地址就直接是公网ip的地址,然后就导致一直午饭监听,程序报错为“The address is not avalible.”,我就很奇怪,然后问了腾讯云的客服,给我的解释就是服务器内部不支持监听公网地址,如果需要实现监听公网地址需要开通eip直通,具体可以看一下文章《ip和EIP的区别》,但是转成eip资费太贵了,总之就是普通的公网ip没有映射到你的主机上,而EIP可以直接映射到你的主机上,在程序里面你能监听的是主机层次上有的ip地址,所以你没办法去监听普通的公网IP,那我们怎么实现监听呢?
后来我发现腾讯云的网卡设置上默认的把公网ip得知和内网ip的地址绑定了,那么就说明我们直接监听内网IP地址不就好了吗!


果不其然,监听成功!可以连接通讯了!!!!!
总结:直接监听内网Ip地址即可,因为购买的服务器默认公网绑定的是内网ip 地址

注意:

  1. 如果还是无法连接,那十有八九是防火墙的端口没打开,腾讯云服务器可以安全组里面编辑出站入站的规则,开放你要开放的端口,地址就填内网的地址。
  2. 这里用的是带图形界面的做测试,那真正的项目长期运行服务器当然不要带图形界面啦!
  3. 这是一个踩坑日记,后续有别的还会补,希望能帮到像我一样的新手玩家!

程序源码下载地址:https://download.csdn.net/download/weixin_42999453/13189726


转载:https://blog.csdn.net/weixin_42999453/article/details/110140831
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场