• 30_网络编程-socketserver


    一、socketserver
     
        socketserver可以实现和多个客户端通信。它是在socket的基础上进行了一层封装,也就是说底层还是调用的socket,在py2.7里面叫做SocketServer也就是大写了两个S,在py3里面就小写了。
     1 import socketserver                              #1、引入模块
     2 class MyServer(socketserver.BaseRequestHandler): #2、自己写一个类,类名自己随便定义,然后继承socketserver这个模块里面的BaseRequestHandler这个类
     3 
     4     def handle(self):                            #3、写一个handle方法,必须叫这个名字
     5         #self.request                            #6、self.request 相当于一个conn
     6 
     7         self.request.recv(1024)                  #7、收消息
     8         msg = '亲,学会了吗'
     9         self.request.send(bytes(msg,encoding='utf-8')) #8、发消息
    10 
    11         self.request.close()                     #9、关闭连接
    12 
    13         # 拿到了我们对每个客户端的管道,那么我们自己在这个方法里面的就写我们接收消息发送消息的逻辑就可以了
    14         pass
    15 if __name__ == '__mian__':
    16     #thread 线程,现在只需要简单理解线程,别着急,后面很快就会讲到啦,看下面的图
    17     server = socketserver.ThreadingTCPServer(('127.0.0.1',8090),MyServer)#4、使用socketserver的ThreadingTCPServer这个类,将IP和端口的元祖传进去,还需要将上面咱们自己定义的类传进去,得到一个对象,相当于我们通过它进行了bind、listen
    18     server.serve_forever()                       #5、使用我们上面这个类的对象来执行serve_forever()方法,他的作用就是说,我的服务一直开启着,就像京东一样,不能关闭网站,对吧,并且serve_forever()帮我们进行了accept
    19 
    20 
    21 #注意:
    22 #有socketserver 那么有socketclient的吗?
    23 #当然不会有,我要作为客户去访问京东的时候,京东帮我也客户端了吗,客户端是不是在我们自己的电脑啊,并且socketserver对客户端没有太高的要求,只需要自己写一些socket就行了。
        2、基本步骤
        用socketserver创建一个服务的步骤:
     
        (1) 创建一个request handler class (请求处理类),合理选择StreamRequestHandler和DatagramRequestHandler之中的一个作为父类(当然,使用BaseRequestHandler作为父类也可),并重写它的handle()方法。
        (2) 实例化一个server class对象,并将服务的地址和之前创建的request handler class传递给它。
        (3) 调用server class对象的handle_request() 或 serve_forever()方法来开始处理请求。
        
     
  • 相关阅读:
    7-1 城市间紧急救援 (25 分)(最短路径:斯特拉算法)
    常见的MD5碰撞
    PHP常见绕过(更新ing)
    7-10 旅游规划 (25 分)
    杂记:用python向网页提交数据
    python学习日记
    NOIP2018提高组金牌训练营——搜索专题
    noip复习之拓扑排序
    NOIP2018提高组金牌训练营——字符串专题
    NOIP2018提高组金牌训练营——数论专题
  • 原文地址:https://www.cnblogs.com/hq82/p/9846270.html
Copyright © 2020-2023  润新知