Python之路【第九篇】:Python基础(26)——socket server

socketserver

Python之路【第九篇】:Python基础(25)socket模块是单进程的,只能接受一个客户端的连接和请求,只有当该客户端断开的之后才能再接受来自其他客户端的连接和请求。当然我 们也可以通过python的多线程等模块自己写一个可以同时接收多个客户端连接和请求的socket。但是这完全没有必要,因为python标准库已经为 我们内置了一个多线程的socket模块socketserver,我们直接调用就可以了,完全没有必要重复造轮子。

我们只需简单改造一下之前的socket演示程序的服务端就可以了,客户端不用变

 1 import socketserver
 2 class Myserver(socketserver.BaseRequestHandler):
 3     ‘‘‘
 4     定义一个类,这个类要继承自socketserver.BaseRequestHandler
 5     ‘‘‘
 6     def handle(self):
 7         ‘‘‘
 8         重写handle方法,这个非常关键,当server收到客户端的请求,就会为更改客户端单独
 9         启动一个线程并调用该方法处理客户端的请求
10         ‘‘‘
11         print(‘New Conn: ‘,self.client_address)
12         while True:
13             ‘‘‘
14             循环接收客户端发送过来的数据,这里可以一
15             些判断比如接收到的内容为空或发生异常及其
16             他推出逻辑来退出循环
17             ‘‘‘
18             data = self.request.recv(1024)
19             print(‘Client say: %s‘ %data.decode())
20             self.request.send(data)
21
22
23 if __name__ == ‘__main__‘:
24     IP_PORT = (‘127.0.0.1‘, 9999) # 定义监听的IP地址和端口
25     server = socketserver.ThreadingTCPServer(IP_PORT, Myserver) # 创建soeketserver对象,ThreadingTCPServer方法接收两个参数,一个是监听的ip地址和端口,另一个是刚才我们创建的类
26     server.serve_forever() # 启动服务

socketserver就是用了多线程和类的技术对原生socket模块做了封装

时间: 2024-10-25 20:40:52

Python之路【第九篇】:Python基础(26)——socket server的相关文章

python之路入门篇

一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Circus.他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言. 最新的TIOBE排行榜,Python赶超PHP占据第4, Python崇尚优美.清晰.简单,是一个

Python开发【第九篇】:协程、异步IO

协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是协程,协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切换回来的时候,恢复先前保存的寄存器上下文和栈.因此,协程能保留上一次调用的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法,进入上一次离开时所处逻辑流的位置. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返

Python之路之安装Python

本篇文章我们就来谈一谈如何安装Python. 首先当然是要去下载啦!你可以去Python的官网(python.org)下载完整的Python.假如你是一名新手,想学Python试试看,你可以先用Python的在线版本.如图,你点击箭头,就可以进入Python的在线版本.但在线版本有很多不便,比如说在线版的Python就无法保存文件,这就非常蛋疼了.所以在你熟悉了Python的代码结构及使用方式之后,就可以下载Python本地版了.本地版主流的有两个版本,分别是Python2.7和Python3.

python入门第1篇 python简介

一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写Python语言的编译器.Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Circus.他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言. 最新的TIOBE排行榜,Python占据第4, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言.

python之路一,python基本语法

python基本语法: 1.python基本语句结构: 首先,在其他的语言中,比如java,c++,c#等,没写完一行语句之后,都需要在语句的末尾加一个分号,表示该语句结束,但是在python中,我们是不需要在每一行的末尾增加分号的,python默认每一行为一条语句,当然我们加上也并不会报错,这一点跟js有些像.比如如下代码会顺利执行 1 print("hello world") 2 print("hello world") 3 print("hello

Python开发【第九篇】:HTML (二)

python[第十四篇]HTML基础 时间:2016-08-08 20:57:27      阅读:49      评论:0      收藏:0      [点我收藏+] 什么是HTML? HTML(HyperText MarkUp Language)超文本标记语言,通过使用标记来描述文档结构和表现形式的一种语言,由浏览器进行解析,然后把结果显示在网页上,通俗的讲它就是服务器发送的字符串到浏览器,通过浏览器能解析的规则用HTML来描述, 它是网页构成的基础,你见到的所有网页都离不开HTML,所以

Python学习【第九篇】函数

函数 函数是什么? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上而下实现功能,其往往用一段代码来实现指定功能,开发过程中最常见的操作就是复制粘贴,就是将之前实现的代码块复制到现需功能处,如下: 1 while True: 2 if cpu利用率 > 90%: 3 #发送邮件提醒 4 连接邮箱服务器 5 发送邮件 6 关闭连接 7 8 if 硬盘使用空间 > 90%: 9 #发送邮件提醒 10 连接邮箱服务器 1

python之路第二篇

python语言介绍 编译型和解释型 静态语言和动态语言 强类型定义语言和弱类型语言 python数据类型介绍 python数据类型分:数字.布尔型.字符串.列表.元组.字典 1.整数 例如:1,2,33,44等 整数的功能如下: 1 class int(object): 2 """ 3 int(x=0) -> int or long 4 int(x, base=10) -> int or long 5 6 Convert a number or string t

python之路(一.python基础)

1python发展和简介 2.python版本区别 3.python安装 4.数据类型 5.变量与赋值 6. 用户交互 7.判断 8.循环 9.运算符 10.字符编码 11. 文件操作

Python开发【第九篇】:进程、线程、协程

什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于,程序是指令的集合,它是进程运行的静态描述文本:进程是程序的一次执行活动,属于动态概念. 什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 进程与线程的区别? 线程共享内存空间,进程