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

  • 相关阅读:
    Kinect 开发 —— 硬件设备解剖
    Kinect 开发 —— 引言
    (转)OpenCV 基本知识框架
    OpenCV —— 摄像机模型与标定
    OpenCV —— 跟踪与运动
    OpenCV —— 图像局部与分割(二)
    OpenCV —— 图像局部与部分分割(一)
    OpenCV —— 轮廓
    OpenCV —— 直方图与匹配
    OpenCV —— 图像变换
  • 原文地址:https://www.cnblogs.com/zhangxiaxuan/p/5498977.html
Copyright © 2011-2022 走看看