我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python3-socketserver

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python3-socketserver

目录

socketserver模块

基于TCP链接的简单并发程序

基于UDP无链接的简单并发程序

错误笔记:

ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。


 

  模块socketserver是标准库提供的服务器框架基础.

这个框架包括了BaseHTTPServer , SimpleHTTPServer , CGIHTTPServer , SimpleXMLRPCServer , DocXMLRPCServer

等服务器,他们在基本服务器的基础上添加了各种功能。

  socketserver包含了4个基本的服务器

                        1.TCPServer(支持TCP套接字流)

                        2.UDPServer(支持UDP数据报套接字)

                        3.UnixStreamServer和UnixDatagramServer

编写服务端底层流程:

   服务器接受客户端连接请求——》实例话一个请求处理程序——》根据服务器类和请求处理程序类,调用处理方法。

例如:

   基本请求程序类(BaseRequestHandler)调用方法 handle 。此方法通过属性 self.request 来访问客户端套接字、

   StreamRequestHandler类(处理流),通过属性self.rfile(用于读取)和self.wfile(用于写入),进行与客户端通信

 

基于tcp的socketserver,自定义类中:

      conn,client_addr=socket(AF_INET,SOCK_STREAM)

  1.   self.server即套接字对象  <socketserver.ThreadingTCPServer object at 0x000001DA1221FB00>
  2.   self.request即一个链接  self.request = conn ; 如: <socket.socket fd=472, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 59405)>
  3.   self.client_address即客户端地址 self.client_address = client_addr  ; ('127.0.0.1', 59405)                                                                            

基于udp的socketserver,自定义类中:

  1.   self.request是一个元组(第一个元素是客户端发来的数据,第二部分是服务端的udp套接字对象)                                      如:(b'adsf', <socket.socket fd=200, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0, laddr=('127.0.0.1', 8080)>)
  2.   self.client_address即客户端地址 ('127.0.0.1', 50323)

基于TCP链接的简单并发程序

 

服务端:


import socketserver


# 自定义类来实现通信循环
class MyTCPHandler(socketserver.BaseRequestHandler):
    # 必须写入handle方法,建立链接时会自动执行handle方法
    def handle(self):
        while True:
            try:
                data = self.request.recv(1024)
                if not data: break
                print('->client:', data)
                self.request.send(data.upper())
            except ConnectionResetError:
                break
        self.request.close()


if __name__ == '__main__':
    server = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyTCPHandler)
    server.serve_forever()  # 链接循环

客户端1/2/3/4……


import socket

client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(('127.0.0.1',8080))

while True:
    client.send('hello'.encode('utf-8'))
    data = client.recv(1024)
    print(data)

基于UDP无链接的简单并发程序

 

服务端:


import socketserver


# 自定义类来实现通信循环
class MyUDPHander(socketserver.BaseRequestHandler):
    def handle(self):
        data,sock = self.request
        sock.sendto(data.upper(),self.client_address)

if __name__ == '__main__':
    server = socketserver.ThreadingUDPServer(('127.0.0.1', 8080), MyUDPHander)
    server.serve_forever()  # 链接循环

 

客户端1/2/3/4……:


from socket import *

client = socket(AF_INET,SOCK_DGRAM)

while True:
    client.sendto(b'hello',('127.0.0.1',8080))
    data,server_add = client.recvfrom(1024)
    print(data)

错误笔记:

ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。

- 服务端代码错误

- 解决方法:自定义handler类内必须写入handle方法

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

- 解决方法:kill相关进程重新启动

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python3-socketserver

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python3-socketserver

目录socketserver模块基于TCP链接的简单并发程序基于UDP无链接的简单并发程序错误笔记:ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。Connectio
2023-01-31

socketserver实现并发

TCP协议的socket一次只能和一个客户端通信, 而socketsever可以时间和多个客户端通信.socketserver是在socket的基础上进行了一层封装, 它底层还是调用的socket. 我们通过以下代码来看下socketser
2023-01-30

python之SocketServer传

一、socket传文件实例1: Sever#!/usr/bin/python27#coding:utf-8import SocketServerimport osclass myserver(SocketServer.BaseRequest
2023-01-31

python模块SocketServer

参考http://my.oschina.net/u/1433482/blog/190612 参考http://fantefei.blog.51cto.com/2229719/1282377服务器类型5种类型:BaseServer,TCPSe
2023-01-31

Python探索之SocketServer详解

SocketServer,网络通信服务器,是Python标准库中的一个模块,其作用是创建网络服务器。SocketServer模块定义了一些类来处理诸如TCP、UDP、UNIX流和UNIX数据报之上的同步网络请求。SocketServer模块
2022-06-05

SocketServer 源码分析

Creating network servers.contentsSocketServer.pycontentsfile headBaseServerBaseServer.serve_foreverBaseServer.shutdownBa
2023-01-31

socketserver模块实现并发和连

一.socketserver模块  1.sockeserver的源码流程  2.简单的使用socketserver服务端import socketserverclass MyServer(socketserver.BaseRequestHa
2023-01-30

Python的socket与socketserver怎么使用

这篇“Python的socket与socketserver怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python
2023-06-30

第二十九天- socketserver模

1.socketserver模块:  socketserver,它提供了服务器中心类,可简化网络服务器的开发,内部使用IO多路复用以及“多线程”和“多进程”,从而实现并发处理多个客户端请求的socket服务端。即,每个客服端请求连接到服务器
2023-01-30

python中SocketServer的作用是什么

本篇文章为大家展示了python中SocketServer的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scra
2023-06-14

怎么在python中利用socketserver处理客户端

今天就跟大家聊聊有关怎么在python中利用socketserver处理客户端,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Jav
2023-06-14

Python3教程——5、Python3

一、Pycharm常用快捷键有颜色的为很常用,或不易发现 编辑类:Ctrl + Space 基本的代码完成(类、方法、属性)Ctrl + Alt + Space 类名完成Ctrl + Shift + Enter 语句完成Ctrl + P 参
2023-01-31

实例讲解Python中SocketServer模块处理网络请求的用法

SocketServer创建一个网络服务框架。它定义了类来处理TCP,UDP, UNIX streams 和UNIX datagrams上的同步网络请求。 一、Server Types 有五个不同的服务器类在SocketServer中。 1
2022-06-04

python3 cookbook

使用deque(maxlen=N)构造函数会新建一个固定大小的队列.当新的元素加入并且这个队列已满的时候,最老的元素会被移除掉.在队列两端插入或者删除元素时间复杂度都是O(1), 而在列表的开头插入或删除元素的时间复杂度为O(N).当要查找
2023-01-31

Python3 spider

http://blog.jobbole.com/77821/Python3网络爬虫的一个资料,还可以,备份。
2023-01-31

Python3 isinstance()

描述isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。isinstance() 与 type() 区别:type() 不会认为子类是一种父类类型,不考虑继承关系。isinstance() 会认为子类是一种
2023-01-31

python3-numpy

参考地址:1、https://www.shiyanlou.com/courses/9122、https://www.shiyanlou.com/courses/3483、https://docs.scipy.org/doc/numpy/re
2023-01-31

python3_01.python3.

CentOS 6.5 安装Python 3.5本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2015-11/124908.htm1、CentO
2023-01-31

Python3 CookBook |

文章首发于知乎专栏,欢迎关注。https://zhuanlan.zhihu.com/py...以下测试代码全部基于 Python31、查找最大或最小的 N 个元素工作中有时会遇到这样的需求,取出数据中前面 10% 的值,或者最后 10% 的
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录