zoukankan      html  css  js  c++  java
  • python摸爬滚打之day29----socketserver实现服务端和多个客户端通信

      什么是socketserver?

         TCP协议下的socket实现了服务端一次只能和一个客户端进行通信, 而socketserver实现了服务端一次能和多个客户端进行通信, 底层调用的还是socket.

    import socketserver
    
    class MyServer(socketserver.BaseRequestHandler):
    
        # self.request             相当于创建一个通信通道 conn
    
        """
        继承BaseRequestHandler, 实例化类时要执行
        def __init__(self, request, client_address, server):
        self.request = request
        self.client_address = client_address
        self.server = server
        self.setup()
        try:
            self.handle()
        finally:
            self.finish()
        """
    
        def handle(self):       # 方法名字必须是 handle, 得和源码一样, 不能变
            while 1:
                print(str(self.request.recv(1024),"utf8"))
                self.request.send(bytes(input("服务端发送信息>>>>>"),"utf8"))
    
    
    
    if __name__ == "__main__" :
    
        ip_port = ("127.0.0.1", 8900)
    
        # 实例化一个socket对象,并封装了IP和端口,以及自己定义的类. 这一步完成了server对象两个内容: bind IP和端口, listen 排队的数量
        server = socketserver.ThreadingTCPServer(ip_port,MyServer)
    
        # 调用serve_forever方法, 建立通信通道, 源码(request, client_address = self.get_request(), self.get_request方法就是
        # server对象 accept() 的过程, ) 在这一步开启多线程应对并发, 并进入处理通信部分, 实例化 Myserver类, 并执行handle方法(看源码)
        server.serve_forever()
  • 相关阅读:
    poj 1321 棋盘问题 (DFS深度优先搜索)
    HDOJ1312 Red and black(DFS深度优先搜索)
    《数据结构》例1.3
    hdoj1905 Pseudoprime numbers (基础数论)
    百练4003 十六进制转十进制(水题)
    第二天——2.23
    第一天——2.22
    返校——2.21
    被盗号了——2.19
    继续咸鱼——2.18
  • 原文地址:https://www.cnblogs.com/bk9527/p/10020778.html
Copyright © 2011-2022 走看看