小成開發日記----利用Qt/C++在騰訊雲/阿里雲伺服器搭建TCP/IP協議實現網路通訊以及Qt在linux下的安裝和程式打包踩坑(詳解)

語言: CN / TW / HK

作者:小成Charles
原創作品
轉載請標註原創文章地址:http://blog.csdn.net/weixin_42999453/article/details/110140831

引言

最近兩天一直在研究網路通訊的相關程式設計,以前一直侷限於在區域網的通訊測試,因為很少做這一方面的開發就買了個伺服器研究了很久,由於自身的計網基礎比較差,所以也踩了不少的坑!這裡開發用騰訊雲的Linux centos 7 系統做案列

這是程式執行截圖在這裡插入圖片描述
程式原始碼下載地址:

一、安裝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. 這是一個踩坑日記,後續有別的還會補,希望能幫到像我一樣的新手玩家!

程式原始碼下載地址: