最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python如何操作socketserver

    正文概述    2020-06-08   289

    python如何操作socketserver

    python3操作socketserver

    socketserver是标准库中的一个高级模块,用于网络客户端与服务器的实现.模块中,已经实现了一些可供使用的类。

    在python3中,导入socketserver模块使用的命令:

    import socketserver

    socketserver模块包括许多可以简化TCP,UDP,UNIX域套接字服务器实现的类。

    1.处理程序

    使用socketserver模块 ,必须先定义一个继承自BaseRequestHandle的处理程序类。

    BaseRequestHandle类的实例化可以实现以下方法:

    sock.handle()调用该方法执行实际的请求操作.调用函数可以不带任何参数,但是几个实例变量包含有用的值。

    sock.request包含请求。

    sock.client_address包含客户端的地址。

    sock.server包含调用处理程序的实例。

    对于TCP之类的数据流服务,sock.request属性是套接字对象。

    对于数据报服务,还是包含收到数据的字节字符串。

    2.sock.setup()该方法在handle()之前调用.默认情况下,不执行任何操作.如果希望服务器实现更多连接设置(如建立SSL连接),则无需调用该方法。

    3.sock.finish()调用本方法可以在执行完handle()之后执行清除操作.默认情况下,不执行任何操作.如果setup()和handle()方法都不生成异常,则无需调用该方法。

    如果知道应用程序只能操纵面向数据流的连接(如TCP),那么应从StreamRequestHandle继承,而不是BaseRequestHandler.StreaRequestHandler类设置了两个属性,sock.wfile是将数据写入客户端的类文件对象,sock.rfile是从客户端读取数据的类文件对象。

    如果编写针对数据包操作的处理程序并将响应持续返回给发送方,那么它应当从DategramRequestHandler继承.它提供的类接口与StreamREquestHandler相同。

    相关推荐:《Python视频教程》

    2.服务器

    要使用处理程序,必须将其插入到服务器对象,定义了四个基本的服务类。

    (1).TCPServer(address,handler)         支持使用IPV4的TCP协议的服务器,address是一个(host,port)元组.
                                               Handler是BaseRequestHandler或StreamRequestHandler类的子类的实例.
    (2).UDPServer(address,handler)         支持使用IPV4的UDP协议的服务器,address和handler与TCPServer类似.
    (3).UnixStreamServer(address,handler)    使用UNIX域套接字实现面向数据流协议的服务器,继承自TCPServer.
    (4).UnixDatagramServer(address,handler)    使用UNIX域套接字实现数据报协议的服务器,继承自UDPServer.

    所有四个服务类的实例都有以下方法和变量:

    1.sock.socket             用于传入请求的套接字对象
    2.sock.server_address        监听服务器的地址.比如元组("127.0.0.1",80)
    3.sock.RequestHandlerClass      传递给服务器构造函数并由用户提供的请求处理程序类.
    4.sock.serve_forever()        处理无限的请求.
    5.sock.shutdown()           停止serve_forever()循环.
    6.sock.fileno()            返回服务器套接字的整数文件描述符.该方法可以有效的通过轮询操作(如select()函数)
                                     使用服务器实例。

    3.定义自定义服务器

    服务器往往需要特殊的配置来处理不同的网络地址簇.超时期,并发和其他功能,可以通过继承上面四个基本服务器类来自行定义。

    可以通过混合类获得更多服务器功能,这也是通过进程或线程分支添加并发的方法.为了实现并发性,定义了以下类:

    1.ForkingMinIn          将UNIX进程分支添加到服务器的混合方法,使用该方法可以让服务器服务多个客户.
    2.ThreadingMinIn        修改服务器的混合类,可以使用多线程服务多个客户端.

    要向服务器添加这些功能,可以使用多重继承,其中首先列出了混合类.

    由于并发服务器很常用,为了定义它,SockServer预定义了以下服务器类:

    1.ForkingUDPServer(address,handler)
    2.ForkingTCPServer(address,handler)
    3.TthreadingUDPServer(address,handler)
    4.ThreadingTCPServer(address,handler)

    SockerServer模块中的类主要有以下几个:

     1.BaseServer                        包含服务器的核心功能与混合类(min-in)的钩子功能.这个类主用于派生,
                                          不要直接生成这个类的类对象,可以考虑使用TCPServer和UDPServer类.
     2.TCPServer                  基本的网络同步TCP服务器
     3.UDPServer                  基本的网络同步UDP服务器
     4.ForkingMinIn                实现了核心的进程化功能,用于与服务器类进行混合(min-in),以提供一些异步特性.
                                           不要直接生成这个类的对象
     5.ThreadingMinIn               实现了核心的线程化功能,用于与服务器类进行混合(min-in),以提供一些异步特性,
                                            不要直接生成这个类的对象
     6.ForkingTCPServer             ForkingMinIn与TCPServer的组合
     7.ForkingUDPServer             ForkingMinIn与UDPServer的组合
     8.BaseRequestHandler       
     9.StreamRequestHandler           TCP请求处理类的一个实现
     10.DataStreamRequestHandler         UDP请求处理类的一个实现

    使用socketserver模块编写的TCP服务器端代码:

    # !/usr/bin/env python
    # _*_coding:utf-8_*_
    import socketserver
    class MyServer(socketserver.BaseRequestHandler):
        def handle(self):
            print("from conn:",self.request)
    s1=socketserver.ThreadingTCPServer(("127.0.0.1",9999),MyServer)
    s1.serve_forever()

    起源地下载网 » python如何操作socketserver

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元