• 我的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模块做了封装,我们使用起来就是这么简单

  • 相关阅读:
    iOS学习13之OC NSString类
    iOS之08-核心语法
    iOS学习12之OC属性和点语法
    iOS学习11之OC继承
    iOS之07-三大特性之多态 + NSString类
    iOS学习10之OC类和对象
    swift(三)字典数组操作
    swift(二)swift字符串和字符和逻辑运算
    swift(二)swift字符串和字符和逻辑运算
    swift(一)基础变量类型
  • 原文地址:https://www.cnblogs.com/zhangxiaxuan/p/5498977.html
Copyright © 2020-2023  润新知