zoukankan      html  css  js  c++  java
  • 我的Python成长之路---第八天---Python基础(23)---2016年3月5日(晴)

    socketserver

    之前讲道德socket模块是单进程的,只能接受一个客户端的连接和请求,只有当该客户端断开的之后才能再接受来自其他客户端的连接和请求。当然我们也可以通过python的多线程等模块自己写一个可以同时接收多个客户端连接和请求的socket。但是这完全没有必要,因为python标准库已经为我们内置了一个多线程的socket模块socketserver,我们直接调用就可以了,完全没有必要重复造轮子。

    我们只需简单改造一下之前的socket演示程序的服务端就可以了,客户端不用变

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #!/usr/bin/env python3
    # coding:utf-8
    '''
    Created on: 2016年3月5日
     
    @author: 张晓宇
     
    Email: 61411916@qq.com
     
    Version: 1.0
     
    Description: socketserver演示程序
     
    Help:
    '''
    import socketserver
    class Myserver(socketserver.BaseRequestHandler):
        '''
        定义一个类,这个类要继承自socketserver.BaseRequestHandler
        '''
        def handle(self):
            '''
            重写handle方法,这个非常关键,当server收到客户端的请求,就会为更改客户端单独
            启动一个线程并调用该方法处理客户端的请求
            '''
            print('New Conn: ',self.client_address)
            while True:
                '''
                循环接收客户端发送过来的数据,这里可以一
                些判断比如接收到的内容为空或发生异常及其
                他推出逻辑来退出循环
                '''
                data = self.request.recv(1024)
                print('Client say: %s' %data.decode())
                self.request.send(data)
     
     
    if __name__ == '__main__':
        IP_PORT = ('127.0.0.1', 9999) # 定义监听的IP地址和端口
        server = socketserver.ThreadingTCPServer(IP_PORT, Myserver) # 创建soeketserver对象,ThreadingTCPServer方法接收两个参数,一个是监听的ip地址和端口,另一个是刚才我们创建的类
        server.serve_forever() # 启动服务

    看,是不是很简洁,其实socketserver就是用了多线程和类的技术对原生socket模块做了封装,我们使用起来就是这么简单

  • 相关阅读:
    微信小程序 获取手机号 获取基础信息 自定义分享 获取dom节点
    微信公众号 生成带参数进入公众号关注页的二维码 监听用户关注公众号事件 自定义菜单栏 (服务端)
    js 防抖和节流 (学习笔记)
    vue 封装axios api模块化 并使用方式 MD5 数据加密
    1.1 Logistics Regression模型
    音视频入门-19-使用giflib处理GIF图片
    思维
    面试题库
    前端代码规范
    D3JS笔记
  • 原文地址:https://www.cnblogs.com/zhangxiaxuan/p/5498977.html
Copyright © 2011-2022 走看看