[我叫以赏]Python制作交互式的服务器与客户端互相通讯(引用SOCKET模块)

 

前言

 

欢迎来到我的教程啊,我是以赏,这么说吧,Python我也在学习并未达到“精通”的地步,一部分呢是自学,一部分是老师“传授”的。但我认为学习Python应该“学以致用”(学其它也一样)。易语言的领域呆久了,出来混混Python(嘻嘻嘻)。感谢知乎平台,就因为这样我才有机会发布这篇文章。以及网上的自学资源少之又少,对新手不友好,而且大部分资源标着“转载”的标识,那么我学会了Python服务器与客户端的通讯,要把它写成文章分享出来!

 

所用到的材料与材料的讲解

 

Python:是一种计算机编程语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。(摘自360百科)

 

Python中的socket模块:提供了服务器与客户端通讯的条件,它提供了标准的 BSD Sockets API,Python自带。(Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯)

 

Python中的threading模块:用于多线程的操作,“threading”是“穿线(线程)”的意思。

 

另外还需要一款你上手的Python IDE。

 

思路

 

网上大部分思路近似与这张图

 

普通服务器

 

这种思路只可以,允许一个客户端连接,而且当一个客户端连接后,整个程序会以堵塞的状态继续运行(等待客户时,下面的代码不会运行,下面详细讲解)。

 

所以我们加上多线程,如下

 

并行的服务器

 

这个思路图采取了多线程的方法(即支持并行),当线程①开启等待客户连接,连接后又开启一个新的线程,继续等待客户了连接,线程①在与客户交互时,并不妨碍线程②等待连接客户,此类方法有效的避免了堵塞的问题。(小提示:并行,类似于你再玩游戏,有人敲门,你一边玩游戏一边开门接待客人)

 

线程的简单说明

 

线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。进程与线程之间是包含关系。下面是一个比较通俗的图:

 

 

进程与线程的包含关系

 

当进程启动时(你的程序被运行时),主线程就开始了,我们来看一看下面的图