socketserver模块

sockerserver模块

  socketserver针对服务器,没客户端的事。  

import socketserver                                #步骤一 导入模块
class Myserver(socketserver.BaseRequestHandler):  #步骤二 自定义类,集成BaseRequestHandler类
    def handle(self):                              #步骤三 重写handle方法,需要实现的功能都在此方法下
        print('conn',self.request)                  #self.requset 就是conn
        print(self.request.recv(1024))
if __name__ == '__main__':
    s=socketserver.ThreadingTCPServer(('127.0.0.1',8080),Myserver)     #步骤四,实例ThreadingTCPServer一个对象,参数是ip地址和端口,自定义的继承BaseRequestHandler类
    s.serve_forever()                                  #对象调用 serve_forver()实际执行了handle方法

  这样,服务端通过多线程实现了并发。

socketserver模块实际上隐藏了链接循环,通讯循环。

import socketserver

class MyTCPhandler(socketserver.BaseRequestHandler):
    def handle(self): #通讯循环
        #self.request=conn      self.request 在通讯循环里直接用就可以。
        while True:
            try:
                data=self.request.recv(1024)
                if not data:break
                self.request.send(data.upper())
            except ConnectionResetError:
                break

if __name__ == '__main__':
    obj=socketserver.ThreadingTCPServer(('127.0.0.1',8082),MyTCPhandler)
    obj.serve_forever()      #连接循环
原文地址:https://www.cnblogs.com/654321cc/p/7602853.html