socketserver模块使用

socketserver 模块简化了编写网络服务程序的任务;同时 SocketServer 模块也是 Python标准库中很多服务器框架的基础。
socketserver 模块可以简化网络服务器的编写。Python把网络服务抽象成两个主要的类,一个是 Server 类,用于处理连接相关的网络操作,另外一个则是 RequestHandler 类,用于处理数据相关的操作;并且提供了两个Mixin类,用于扩展 Server,实现多进程或多线程。

Server 类:
它包含了种五种server类,BaseServer(不直接对外服务)。TCPServer使用TCP协议,UDPServer使用UDP协议,还有两个不常使用的,
即UnixStreamServer和UnixDatagramServer,这两个类仅仅在unix环境下有用(AF_unix)。

RequestHandler类:
所有requestHandler都继承BaseRequestHandler基类。

注: 全双工管道通信:既可以 收,也可以 发

单工、半双工和全双工的区别: https://blog.csdn.net/starstar1992/article/details/53032409

socketserver 的使用方法:

import socketserver

"""
socketserver: 基于多线程实现的并发通信
sockerserver 使用方法(固定套路):
1. 定义功能类
    class MyServer(socketserver.BaseRequestHandler):  
        def handler(self):  
            pass

2. server = socketserver.threadingTCPServer(("127.0.0.1",8800),MyServer) 

3. server.server_forerver()  
"""

class MyServer(socketserver.BaseRequestHandler):  # 必须要继承 socketserver.BaseRequestHandler 这个类
    
    def handler(self):  # 必须要有 handler() 这个方法
        """
        handler() 方法里面要放并发的业务逻辑
        该方法下的 self.request 也是固定写法,是一个套接字对象,即相当于 以前 socket 时的 conn
        """
        # 写自己的业务逻辑
        pass


# 通过 socketserver 引一个要 并发的类
server = socketserver.ThreadingTCPServer(("127.0.0.1",8800),MyServer)   # 第一个参数:IP和端口,第二个参数:要实例化的 功能类;threadingTCPServer 这个类是通过 多线程 帮我们实现的并发;用的是 TCP 协议
# server = socketserver.ForkingTCPServer(("127.0.0.1",8800),MyServer)  # 多进程 TCP 通信
server.server_forerver()

猜你喜欢

转载自www.cnblogs.com/neozheng/p/10159273.html