利用Qt/C++在腾讯云/阿里云服务器搭建TCP/IP协议实现网络通信以及Qt在linux下的安装和程序打包踩坑(详解)
作者:小成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打包发布(超详细)》
安装注意以下几点:
- 选择
linux
系统不要过于的新,也不要过于的旧 - 高版本的
Linux
配高版本的Qt
软件,低版本同理 - 第一次配置可能会缺少乱七八糟的库,缺啥就下载啥就好了
-
linuxdeployqt
在最新版本的linux
上无法通过编译,所以千万不要安装最新的linux
系统,LTS长期支持版本就好了 - 如果真的因为版本太新无法运行
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 地址
注意:
- 如果还是无法连接,那十有八九是防火墙的端口没打开,腾讯云服务器可以安全组里面编辑出站入站的规则,开放你要开放的端口,地址就填内网的地址。
- 这里用的是带图形界面的做测试,那真正的项目长期运行服务器当然不要带图形界面啦!
- 这是一个踩坑日记,后续有别的还会补,希望能帮到像我一样的新手玩家!
程序源码下载地址:https://download.csdn.net/download/weixin_42999453/13189726
本文地址:https://blog.csdn.net/weixin_42999453/article/details/110140831