在我们正常的使用socket模块来写一个server的程序就会显得比较的复杂通常一般流程为

  1.生成socket实例对象

  2.绑定地址

  3.开始监听

  4.接收数据

一般demo为

# 服务器

import socket
server = socket.socket() # 声明socket类型,同时生成socket连接对象
server.bind(('localhost', 6969)) # 绑定要监听的端口此时绑定的是本地
server.listen() # 监听 括号里面的就是最大允许链接
print('等待电话打进来')
coon, addr = server.accept() # 等待 (此时上面加一个while 就可以多个电话打进来并且进行通话)
# coon 就是客户端连过来而在服务器端为其生成的一个连接实例
# addr 就是地址
print('电话打进来了')
print(coon, addr) # 将coon 与addr 显示出来
while True: # 此时就可以一直不停的发送数据了, 此时的效果就是一个电话可以无阻碍的通话
# 如果此时没有true的话就只能接收一次了
data = coon.recv(1024) # 接收数据
print('recv:', data.decode()) # 此时注意我们需要吧接收的数据解码,因为发过来的是byte类型
coon.send(data.upper()) # 将数据里面的字母转化为大写发送
server.close()

这就是一个单个接入,多次接收的server

如果想用多个接入多个接收的话我们只需要在coon上加一个while即可 ,对与server来说一个coon就是哟个接入点

那么我们的socketserver又是方便在何处呢

对于socketserver来说我们只需要修改头节点就可以了

我们需要新建立一个类在类里面修改 socketserver . BaseRequestHandler即可

在这个类中hand结束即代表 当前连接断开

import socketserver

class My_TCPhandler(socketserver.BaseRequestHandler):
def handle(self):
while True:
try:
self.data = self.request.recv(1024)
print("{} wrote:".format(self.client_address[0]))
print(self.data)
self.request.send(self.data.upper()) # 服务器端到此结束
except ConnectionResetError as e:
print(e)
break HOST, POST = "localhost", 9999
server = socketserver.ThreadingTCPServer((HOST, POST), My_TCPhandler)
# 并发 TCPServer改成 ThreadingTCPServer 在Linux是建议使用Forking来开多线程
server.serve_forever()

server = socketserver.ThreadingTCPServer((HOST, POST), My_TCPhandler) 时就是开了多线程可以多个接入,多个实时接收与发送
这样来看我们的的服务器端的程序是不是便捷了呢?

python之 socketserver模块的使用的更多相关文章

  1. 浅析python中socketserver模块使用

    虽然说用python编写简单的网络程序狠方便,但是复杂一点的网络程序还是用现成的框架比较好,这样就可以专心事物逻辑,而不是套接字的各种细节.Socketserver模块简化了编写网络服务程序,同时so ...

  2. Python之socketserver模块和验证客户端链接的合法性

    验证客户端链接的合法性 分布式系统中实现一个简单的客户端链接认证功能 #_*_coding:utf-8_*_ from socket import * import hmac,os secret_ke ...

  3. python 39 socketserver 模块并发通信

    socketserver模块 socketserver模块实现一个服务端与多个客户端通信.是在socket的基础上进行了一层封装,底层还是调用的socket. socketserver干了两件事: 1 ...

  4. python 并发socketserver模块

    1.源码class 1.server类:处理链接 +------------+ | BaseServer | +------------+ | v +-----------+ +----------- ...

  5. python 内置标准库socketserver模块的思考

    socketserver模块简化了编写网络服务器的任务, 在很大程度上封装了一些操作, 你可以看成是事件驱动型的设计, 这很不错.它定义了两个最基本的类--服务器类 BaseServer, 请求处理类 ...

  6. Python网络编程(3)——SocketServer模块与简单并发服务器

    主要类型 该模块有四个比较主要的类,其中常用的是 TCPServer 和 UDPServer. 1. TCPServer 2. UDPServer 3. UnixStreamServer,类似于TCP ...

  7. SocketServer模块 《Python核心编程(第3版)》——2.5

    本文内容参考文章地址: https://m.aliyun.com/yunqi/articles/93088/ SocketServer模块 SocketServer是标准库中的一个高级模块(Pytho ...

  8. python 网络编程之socket开发和socketserver模块

    一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...

  9. python网络编程socketserver模块(实现TCP客户端/服务器)

    摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类 ...

随机推荐

  1. 并查集算法Union-Find的思想、实现以及应用

    并查集算法,也叫Union-Find算法,主要用于解决图论中的动态连通性问题. Union-Find算法类 这里直接给出并查集算法类UnionFind.class,如下: /** * Union-Fi ...

  2. 如何获取前端提交来得json格式数据

    composer.json { "require": { "guzzlehttp/guzzle": "~6.0" } } composer ...

  3. docker-docker-compose 安装

    1.安装docker-compose(官网:https://github.com/docker/compose/releases) 安装: curl -L https://github.com/doc ...

  4. 跟我一起学Redis之看完这篇比常人多会三种类型实战(又搞了几个小时)

    前言 对于Redis而言,很多小伙伴只关注其关键的五大基础类型:string.hash.list.set.sorted set(有序集合),其实还有三种特殊类型在很多应用场景也比较适合使用,分别是:b ...

  5. Linux用户和组管理命令-用户属性修改usermod

    用户属性修改 usermod 命令可以修改用户属性 格式: usermod [OPTION] login 常见选项: -u UID: 新UID -g GID: 新主组 -G GROUP1[,GROUP ...

  6. H5移动端实现图片上传

    转至 :https://blog.csdn.net/qq_37610423/article/details/84319410 效果图: 我在用这个的时候发现博主少写了一些东西,导致功能无法实现,所以我 ...

  7. MVC登录

    前言 最近没什么好写的,准备把MVC的登录再写一下,巩固一下 HTML @{ Layout = null; } <!DOCTYPE html> <html> <head& ...

  8. python第一章:基础

    1.数学操作符: 数学操作符与数学基本类似 最高级:** 第二级:*././/.% 第三级:+ .- 遵循从左到右的顺序 如果想改变优先级 可以使用括号,比如:(3+2)*(5-4)=5*1=5 2. ...

  9. this.属性

    this是属于一个具体对象的,而不是属于一个类的. 当你创建了一个对象时,this自动的给你带过来了. this只能在类定义的方法中使用,不能在类定义的外部使用. class Person { //成 ...

  10. 2020-2021-1 20209306 《linux内核原理与分析》第三周作业

    目录 一.实验:完成一个简单的时间片轮转多道程序内核代码 二.学习总结 1.堆栈相关的寄存器 2.堆栈操作 3.其他关键寄存器 4.用堆栈来传递函数的参数 5.了解了函数如何传递返回值,堆栈还提供局部 ...