iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3-socketserver
  • 747
分享到

python3-socketserver

socketserver 2023-01-31 02:01:54 747人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

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

目录

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相关进程重新启动

--结束END--

本文标题: python3-socketserver

本文链接: https://www.lsjlt.com/news/185889.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • python3-socketserver
    目录 socketserver模块 基于TCP链接的简单并发程序 基于UDP无链接的简单并发程序 错误笔记: ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。 Co...
    99+
    2023-01-31
    socketserver
  • socketserver实现并发
    TCP协议的socket一次只能和一个客户端通信, 而socketsever可以时间和多个客户端通信. socketserver是在socket的基础上进行了一层封装, 它底层还是调用的socket.   我们通过以下代码来看下socke...
    99+
    2023-01-30
    socketserver
  • python模块SocketServer
    参考http://my.oschina.net/u/1433482/blog/190612 参考http://fantefei.blog.51cto.com/2229719/1282377服务器类型5种类型:BaseServer,TCPSe...
    99+
    2023-01-31
    模块 python SocketServer
  • python之SocketServer传
    一、socket传文件实例1: Sever#!/usr/bin/python27#coding:utf-8import SocketServerimport osclass myserver(SocketServer.BaseRequest...
    99+
    2023-01-31
    python SocketServer
  • SocketServer 源码分析
    Creating network servers. contents SocketServer.py contents file head BaseServer BaseServer.serve_forever BaseServ...
    99+
    2023-01-31
    源码 SocketServer
  • 第二十九天- socketserver模
      1.socketserver模块:   socketserver,它提供了服务器中心类,可简化网络服务器的开发,内部使用IO多路复用以及“多线程”和“多进程”,从而实现并发处理多个客户端请求的socket服务端。即,每个客服端请求连接...
    99+
    2023-01-30
    socketserver
  • python中SocketServer的作用是什么
    本篇文章为大家展示了python中SocketServer的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scra...
    99+
    2023-06-14
  • socketserver模块实现并发和连
    一.socketserver模块   1.sockeserver的源码流程   2.简单的使用 socketserver服务端 import socketserver class MyServer(socketserver.BaseR...
    99+
    2023-01-30
    模块 socketserver
  • Python网络编程之socket与socketserver
    目录一、基于TCP协议的socket套接字编程1、套接字工作流程1、 服务端套接字函数2、 客户端套接字函数3、 公共用途的套接字函数4、 面向锁的套接字方法5、 面向文件的套接字的...
    99+
    2024-04-02
  • Python的socket与socketserver怎么使用
    这篇“Python的socket与socketserver怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python...
    99+
    2023-06-30
  • 怎么在python中利用socketserver处理客户端
    今天就跟大家聊聊有关怎么在python中利用socketserver处理客户端,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Jav...
    99+
    2023-06-14
  • Python3教程——5、Python3
            一、Pycharm常用快捷键 有颜色的为很常用,或不易发现   编辑类: Ctrl + Space 基本的代码完成(类、方法、属性) Ctrl + Alt + Space 类名完成 Ctrl + Shift + Ent...
    99+
    2023-01-31
    教程
  • python3 __name__
    我们经常会在各种代码中见到一个__name__ == '__main__', 这究竟是什么意思呢 当一个python文件是被当做一个脚本运行的时候, 它的__name__就为__main__, 比如以下代码 >>>...
    99+
    2023-01-31
  • Python3 isinstance()
    描述 isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。 isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系。 isinstance(...
    99+
    2023-01-31
    isinstance
  • python3 GUI
    用python3创建窗口并显示 修改窗口的名字 在窗口中加入标签 在窗口中加入按钮 使按钮有实际意义 添加可编辑文本框 用Tkinter实现一个简单的GUI程序,单击click按钮时会在终端打印出’hello world’...
    99+
    2023-01-31
    GUI
  • Python3 urllib.parse
    1、获取url参数。>>> from urllib import parse >>> url = r'https://docs.python.org/3.5/search.htmlq=parse&...
    99+
    2023-01-31
    urllib parse
  • Python3 urllib.reque
    urllib.request库 是 Python3 自带的模块(不需要下载,导入即可使用)python 自带的模块库文件都是在C:\Python\Lib目录下(C:\Python是我Python的安装目录),python第三方模块库都是在C...
    99+
    2023-01-31
    urllib reque
  • python3 cookbook
    使用deque(maxlen=N)构造函数会新建一个固定大小的队列.当新的元素加入并且这个队列已满的时候,最老的元素会被移除掉.在队列两端插入或者删除元素时间复杂度都是O(1), 而在列表的开头插入或删除元素的时间复杂度为O(N).当要查找...
    99+
    2023-01-31
    cookbook
  • python3- global
    ''' global函数的使用 ''' # 全局定义一个参数a global a a=4 # 给a赋值a=3 def inita(): # 全局定义一个参数a global a a=3 inita()...
    99+
    2023-01-31
    global
  • Python3 类
    目录 Python3 类 继承 项目组织方式 类编码风格 在Python中,首字母大写的名称值得是类,而小写的名称指的是根据类创建的实例。 Python类中的每个属性都必须有初始值。可以在__init__()方法内为某个属性设置默认初始...
    99+
    2023-01-31
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作