返回顶部
首页 > 资讯 > 后端开发 > 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://lsjlt.com/news/185889.html(转载时请注明来源链接)

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

猜你喜欢
  • python3-socketserver
    目录 socketserver模块 基于TCP链接的简单并发程序 基于UDP无链接的简单并发程序 错误笔记: ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。 Co...
    99+
    2023-01-31
    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实现并发
    TCP协议的socket一次只能和一个客户端通信, 而socketsever可以时间和多个客户端通信. socketserver是在socket的基础上进行了一层封装, 它底层还是调用的socket.   我们通过以下代码来看下socke...
    99+
    2023-01-30
    socketserver
  • SocketServer 源码分析
    Creating network servers. contents SocketServer.py contents file head BaseServer BaseServer.serve_forever BaseServ...
    99+
    2023-01-31
    源码 SocketServer
  • Python探索之SocketServer详解
    SocketServer,网络通信服务器,是Python标准库中的一个模块,其作用是创建网络服务器。SocketServer模块定义了一些类来处理诸如TCP、UDP、UNIX流和UNIX数据报之上的同步网络...
    99+
    2022-06-05
    详解 Python SocketServer
  • 第二十九天- socketserver模
      1.socketserver模块:   socketserver,它提供了服务器中心类,可简化网络服务器的开发,内部使用IO多路复用以及“多线程”和“多进程”,从而实现并发处理多个客户端请求的socket服务端。即,每个客服端请求连接...
    99+
    2023-01-30
    socketserver
  • Python网络编程之socket与socketserver
    目录一、基于TCP协议的socket套接字编程1、套接字工作流程1、 服务端套接字函数2、 客户端套接字函数3、 公共用途的套接字函数4、 面向锁的套接字方法5、 面向文件的套接字的...
    99+
    2024-04-02
  • 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怎么使用
    这篇“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
    教程
  • python基于socketserver实现并发,验证客户端的合法性
    目录一、socketserver实现并发二、验证客户端合法性一、socketserver实现并发 tcp协议的socket是只能和一个客户端通信的,使用socketserver可以实现和多个客户端通信,他是在soc...
    99+
    2022-06-02
    python socketserver python 实现并发 python 验证客户端
  • Python使用SocketServer模块编写基本服务器程序的教程
    SocketServer简化了网络服务器的编写。它有4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer。这4个类是同步进行处理的,另外通过...
    99+
    2022-06-04
    模块 服务器 程序
  • 实例讲解Python中SocketServer模块处理网络请求的用法
    SocketServer创建一个网络服务框架。它定义了类来处理TCP,UDP, UNIX streams 和UNIX datagrams上的同步网络请求。 一、Server Types 有五个不同的服务器类...
    99+
    2022-06-04
    实例 模块 网络
  • python3 GUI
    用python3创建窗口并显示 修改窗口的名字 在窗口中加入标签 在窗口中加入按钮 使按钮有实际意义 添加可编辑文本框 用Tkinter实现一个简单的GUI程序,单击click按钮时会在终端打印出’hello world’...
    99+
    2023-01-31
    GUI
  • python3 __name__
    我们经常会在各种代码中见到一个__name__ == '__main__', 这究竟是什么意思呢 当一个python文件是被当做一个脚本运行的时候, 它的__name__就为__main__, 比如以下代码 >>>...
    99+
    2023-01-31
  • Python3 spider
    http://blog.jobbole.com/77821/Python3网络爬虫的一个资料,还可以,备份。...
    99+
    2023-01-31
    spider
  • python3 asyncio
    asyncio 是用来编写 并发 代码的库,使用 async/await 语法。asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等...
    99+
    2023-01-31
    asyncio
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作