本身動手打造mini型QQ(二):從局域網到互聯網的miniQQ

微信公衆號:inspurer
關注可瞭解更多的教程及排版技巧。問題或建議,請公衆號留言;
[若是你以爲對你有幫助,歡迎讚揚]python

上一篇博客:咱們實現了局域網下的QQ互聯通訊:本身動手打造mini型QQ(一):動手實現局域網仿QQ互聯
本篇博客咱們把通訊範圍拓展到整個互聯網linux

私有/公有ip

爲何socket綁定了ip地址和端口後,只能在局域網中通訊呢,這就須要咱們區分私有ip和公有ipubuntu

公有IP

公有IP地址是由INIC(Internet Network Information Center 因特網信息中心)負責。這些IP地址分配給向INIC提出申請併成功註冊的組織機構。經過公有IP地址能直接訪問因特網,固然公有IP是要錢的。緩存

私有IP

隨着網絡的發展,爲節省可分配的註冊IP地址,有一組IP地址被拿出來專門用於私有IP網絡,稱爲私有IP地址。私有IP地址範圍:安全

A類: 10.0.0.0~10.255.255.255服務器

B類:172.16.0.0~172.31.255.255微信

C類:192.168.0.0~192.168.255.255網絡

這些地址是不會被Internet分配的,它們在Internet上也不會被路由,雖然它們不能直接和Internet網鏈接,但經過技術手段仍舊能夠和 Internet通信(NAT技術)。公網IP是直接與英特網鏈接能夠直接訪問網絡(上網),而私有IP地址則是在局域網中使用的IP地址,私有IP是不能直接上網的(沒法直接和公網通訊),當私有網絡內的主機要與位於公網上的主機進行通信時必須通過地址轉換,將其私有地址轉換爲合法公網地址才能對外訪問。也就是要使用NAT-Network Address Translation 網絡地址轉換技術。app

那麼平時咱們的電腦是如何上網的呢?好比咱們辦理了電信寬帶,拉一根網線鏈接到咱們的電腦,咱們的電腦就能上網了。實質上此時咱們的電腦是一個私有IP,電信那邊購買了一個公有IP,咱們電腦和電信的公有IP之間有一個NAT技術設備,也就是說咱們能上網是經過電信的公有IP實現的。python2.7

若是在家安裝了路由器咱們的多臺電腦鏈接在這個路由器上,那麼這些電腦直接就構成了局域網,在這幾臺電腦上能夠直接進行局域網的通訊。可是你家裏構成的局域網和公司的局域網是不能經過局域網通訊的。

在這裏記錄私有IP和公有IP的緣由在於socket網絡通訊須要區別,以便咱們知道哪些IP之間是不能通訊的,哪些IP之間是能夠通訊的。從上述原理咱們就知道同一個局域網內的設備A和設備A,設備A和設備B,廣域網內的設備A和設備B能夠實現雙向鏈接通訊,局域網的設備A和廣域網的設備B能夠單向鏈接(只能由局域網去鏈接廣域網,也就是局域網是客戶端,廣域網是服務端;由於廣域網的IP是固定且惟一的,局域網鏈接網絡經過指定這個公有IP就能找到這臺計算機,找的過程是局域網鏈接電信網絡,經過NAT技術將這個局域網私有IP轉換爲公有IP而後再去和指定的公有IP通訊,這樣就能夠找到指定的公有IP,相反私有IP是不能被公有IP找到的)通訊。不一樣局域網之間的設備不能通訊。

私有ip和公有ip參考了博客 https://blog.csdn.net/youand_me/article/details/83109238

思路分析

瞭解上述區別了,咱們要解決的一個問題是,得到一個可自由使用公有ip,這裏推薦使用阿里雲服務器,下面就是整個server/client系統上雲的配置過程。

阿里雲服務器配置

購買阿里雲服務器

點擊:購買界面傳送門

在這裏插入圖片描述

選擇最低配置便可知足需求,完成學生認證後服務器低至9.5元/每個月,阿里爸爸算是比較良心了哈哈  
若是你不肯花錢,能夠聯繫我無償使用個人阿里雲服務器。前提是個人服務器沒有到期。
在這裏插入圖片描述

這裏有系統鏡像和應用鏡像,個人理解是應用鏡像是在系統鏡像上預裝了一些應用軟件,這裏我選擇的是系統鏡像、Ubuntu 16.04 64位系統,其實這些配置在購買完成後是能夠修改的,相等於重裝系統。  
因爲是Linux系統,須要掌握一些基本的linux終端命令,這個很簡單,百度十分鐘就學會了。

雲服務器配置

在`概覽`處修改密碼
在這裏插入圖片描述

在這裏插入圖片描述

在`防火牆`處設置規則

服務器默認只開放了指定端口,若是想要經過更多端口來訪問服務器,咱們須要添加一個規則,下圖中最後一個規則就是我添加的

在這裏插入圖片描述

雲服務器環境搭建

點擊頁面右上角的遠程鏈接,可打開一個遠程鏈接終端,咱們就是這樣來控制服務器的,玩過linux系統的同窗應該很熟悉。

輸入sudo su root切換至root身份  

在這裏插入圖片描述

雖然報了個錯,可是也切換到root了,暫且忽略這個錯誤,注意最好不要使用屏幕提示的那樣升級Ubuntu至18.04.

因爲咱們的是用python編碼的,因此須要python環境,而ubuntu是預裝了python的,不過是python2.7,咱們能夠經過python -V來查看python版本,因此下一步咱們要作的就是安裝python3,注意必定必定不要卸載python2,不然系統會很是脆弱。

安裝

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

解壓安裝包

tar zxvf Python-3.6.3.tgz

切換到解壓目錄

cd Python-3.6.3

安裝配置,同時指定安裝路徑

./configure --prefix=/usr/local/python36

編譯

make

安裝

make install

到此爲止python3安裝完畢,此時輸入python -V,不出意外依然是輸出python2.7,還須要一步修改python3爲默認才行,這個過程叫作軟鏈接

軟鏈接

mv /usr/bin/python /usr/bin/python.bak

ln -s /usr/local/python36/bin/python3.6 /usr/bin/python

到此python3的環境算是徹底配置好了。

上傳python代碼

下一步就是要把咱們的代碼上傳到阿里雲服務器了,爲了之後方便,先在雲服務器上新建一個myfile文件夾,命令是:

mkdir myfile

在這裏插入圖片描述

而後windwos下鏈接linux服務器還須要下載一個軟件,putty,很是小巧,也很是強大、好用

putty傳送門:點擊下載  

下載好以後安裝,除了修改安裝路徑其他都是一直next,最後finish。

在「運行」中輸入cmd,打開控制檯,切換到剛纔Putty的安裝目錄下,個人是d:\putty,而後輸入pscp命令,咱們須要這個命令來實現文件的上傳。以下圖所示,命令格式爲:

pscp C:\Users\lenovo\Desktop\aliyun\server.py root@xx.xxx.xxx.xx:/home/admin/myfile/

即pscp 要上傳的文件路徑 服務器帳號@服務器IP地址:要存放在服務器的位置路徑,服務器帳號通常固定是root

輸入命令後出來這個:

在這裏插入圖片描述
,要不要在緩存中存儲密碼,爲了安全輸入 n吧,回車後再輸入密碼,若是沒出錯的話,文件已經上傳到服務器了,在服務器上能夠經過 ls命令查看

運行python代碼

理論上說使用命令:

python server.py

就能運行python了,可是這樣有一個缺點就是一旦把鏈接終端關閉,server.py運行的進程已經被殺死了。要想一天24小時使代碼在後臺運行,可以使用命令。

nohup python server.py &

代碼打印信息再也不在終端輸出,而是保存在了同目錄下的nohup.out裏。

運行結果示例
在這裏插入圖片描述

左邊是雲服務器,右邊是本地客戶端。


長按關注


本文分享自微信公衆號 - 月小水長(inspurer)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索