zoukankan      html  css  js  c++  java
  • 模块socketserver,服务端并发socket

    我们已经学会了socket去写服务端了...但是,socket只能一对一的去跟客户端去链接..多个用户就只能等待前一个用户断开,用户体验很不好..

    其实很简单,socketserver大多都是固定写法

     1 import socketserver
     2 class Server(socketserver.BaseRequestHandler):      # 创建一个服务器类,继承父类socketserver.BaseRequestHandler
     3     def handle(self):
     4         # 固定写法,运行时,每个客户端对象会运行此方法,如果没有,就会执行父类BaseRequestHandler中handle方法
     5         msg = self.request.recv(1024).decode()
     6         print(msg)
     7         answer = input("请输入信息:").encode()
     8         self.request.send(answer)
     9 
    10 
    11 if __name__=="__main__":
    12     server = socketserver.ThreadingTCPServer(("127.0.0.1",9999),Server)
    13     # 创建多个并发对象,将本地服务器IP及所创建的服务器类类名传入
    14     server.serve_forever()
    15     # 一直执行此对象

    这样,一个简单的并发服务器就完成了,,可以与多个客户端,进行简单的收发消息操作

    实际上socketserver执行原理和socket是一样的,只是为每个客户端创建一个对象去执行而已..

    简单看看源码:

    1 在父类中为对象封装属性,,将我们传入的地址,和类名传入.创建socket对象,并运行绑定和监听

    2 绑定和监听的实现方法

    3 接下来运行对象中,我们定义的handle方法,,每次连接创建不同的对象,所以可以实现并发

    所以,如果handle名称不一致,会运行父类的handle,而pass

    上面就是socketserver的实现步骤了..

  • 相关阅读:
    c#修改config中的AppSettings属性
    C​#​小​实​例​之​-​-​-​C​#​判​断​网​络
    走过2013,走进2014
    前端工程师常去的网站
    正则表达式中文匹配
    浅谈 -webkit-tap-highlight-color 属性
    JS前端开发判断是否是手机端并跳转操作(小结)(转)
    swf文件加密基础(转)
    Object与Dictionary的区别
    关于事件机制的理解
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/10426408.html
Copyright © 2011-2022 走看看