设为首页 加入收藏

TOP

Python 标准类库 - 因特网协议与支持之socketserver(一)
2019-03-09 00:20:41 】 浏览:137
Tags:Python 标准 因特网 协议 支持 socketserver

标准类库 - 因特网协议与支持之socketserver

by:授客 QQ1033553122

socketserver 模块,简化网络服务编写任务。

 

创建服务的步骤

1  通过子类化BaseRequestHandler 类,创建一个请求处理程序,并且重写handle()方法,该方法将处理接收到的请求
2 传递服务器地址和请求处理程序类参数,实例化server类(如TCPServer)

3 调用server对象的handle_request()、serve_forever()方法,处理单个、多个请求

 

实例

socketserver.TCPServer

服务端(单线程服务器)

#!/usr/bin/env python 3.4.0
#-*- encoding:utf-8 -*-

__author__ = 'shouke'

import socketserver


class MyTCPHandler(socketserver.BaseRequestHandler):
    """
    供server使用的RequestHandler类.

    每个客户端连接连接到服务器时都会被初始化一次,并且必须重写handle()方法以便同客户端交流。
    """

    def handle(self):

        while True:
            # self.request即为与客户端连接的TCP socker
            self.data = self.request.recv(1024).decode('utf-8').strip()

            print('receive data from client[host:%s port:%s]:%s' % (self.client_address[0], self.client_address[1], self.data))
            if self.data == 'bye':
                self.request.sendall(bytes('bye', encoding='utf-8'))
                self.request.close()
                break
            else:

                self.request.sendall(self.data.upper().encode('utf-8'))

if __name__ == '__main__':
    # 创建TCPSocket服务器,绑定到10.118.52.26地址上,端口8000
    server = socketserver.TCPServer(('10.118.52.26', 8000), MyTCPHandler)


    # 激活服务器,让服务器一直运行,直到按Ctrl+C
    server.serve_forever()


客户端

 

#!/usr/bin/env python 3.4.0
#-*- encoding:utf-8 -*-

__author__ = 'shouke'

import socketserver


class MyTCPHandler(socketserver.BaseRequestHandler):
    """
    供server使用的RequestHandler类.

    每个客户端连接连接到服务器时都会被初始化一次,并且必须重写handle()方法以便同客户端交流。
    """

    def handle(self):

        while True:
            # self.request即为与客户端连接的TCP socker
            self.data = self.request.recv(1024).decode('utf-8').strip()

            print('receive data from client[host:%s port:%s]:%s' % (self.client_address[0], self.client_address[1], self.data))
  &n

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python入门教程三:显示'Welc.. 下一篇Python分布式爬虫抓取知乎用户信..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目