微信公众号: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源创计划”,欢迎正在阅读的你也加入,一块儿分享。