Python的标准库里的服务器模块SocketServer可以很方便的开发简单的服务器程序

import SocketServer

class MyHandler(SocketServer.StreamRequestHandler):

def handle():

addr = self.request.getpeername()

print 'connection from:", addr

data = self.rfile.read(1024)

print 'data:', data

self.wfile.write('xxx')

server = SocketServer.ThreadingTCPServer((ip, host), MyHandler)

server.serve_forever()

对于UDP而言,StreamRequestHandler还可以用DatagramRequestHandler代替,ThreadingTCPServer可以用TCPServer, UDPServer代替

在 Python标准库里有如下定义:

class ThreadingTCPServer(ThreadingMixIn, TCPServer):

pass

StreamRequestHandler是BaseRequestHandler的一个子类,我们需要创建一个自己的handler类,继承自StreamRequestHandler,

并重载StreamRequestHandler.handle()方法。

StreamRequestHandler.handle()方法的调用顺序为:

StreamRequestHandler.setup()->StreamRequestHandler.handle()->StreamRequestHandler.finish(),setup和finish调用啥也不做,可以无视

该类中,self.client_address表示客户端地址,如果是StreamRequestHandler, self.request表示socket,如果是DatagramRequestHandler,

self.request是(socket, data)的tuple。同时self.rfile, self.wfile可以用来读写

在标准库里,BaseServer通过handle_request来处理请求(serve_forever就是不停调用handle_request)。handle_request()中包含了

get_request, verify_request, process_request, finish_request。其中finish_request会调用StreamRequestHandler的handle方法。

而process_request会继承自ThreadingMixIn或者ForkingMixIn,对每个request新建线程,然后由线程调用finish_request

BaseServer的其他属性和方法请参考Python Library Reference:

BaseServer.socket: listen的socket

BaseServer.shutdown(): stop serve_forever() loop

BaseServer.allow_reuse_address

BaseServer.request_queue_size

BaseServer.handle_error: 如果RequestHandler的handle方法抛出异常,由handle_error处理

python怎么开发服务器_Python服务器开发(1)相关推荐

  1. python开发职位_Python后端开发是什么职位?

    陪伴而非守候 阶段一:Python开发基础Python全栈开发与人工智能之Python开发基础知识学习内容包括:Python基础语法.数据类型.字符编码.文件操作.函数.装饰器.迭代器.内置方法.常用 ...

  2. python安卓开发实例_python服务器与android客户端socket通信实例

    本文实例讲述了python服务器与android客户端socket通信的方法.分享给大家供大家参考.具体实现方法如下: 首先,服务器端使用python完成,下面为python代码: #server.p ...

  3. python在web可以开发吗_Python Web开发

    参考原文 WSGI接口 WSGI(Web Server Gateway Interface)是一个接口,用来屏蔽底部的细节(如TCP的建立连接,HTTP原始请求和响应格式等).WSGI接口定义非常简单 ...

  4. python i开发工具_Python轻量级开发工具Genay使用

    Genay是一个轻量级的免费,开放源代码的开发工具,支持很多的文件类型,并且支持很多的插件,启动快速.安装包只有十几兆,相比pycharm专业版需要收费,并且社区版的安装包大小有两百多兆,对于pyth ...

  5. android 手机 与 python服务器_Python服务器与多种客户端(Python/Java/Android)之间的通信...

    概述: 我们不会一直满足于客户端程序的开发,因为太过受限了.为了打破这样的受限,你需要做的就是去编写服务器端代码.以及如何在服务器与客户端之间的通信.以下将对此以Python为服务器,并分别以Pyth ...

  6. python中文开发环境_python中文开发环境

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python的开发工具有很多,除了python自带的idle,还有vim.pyc ...

  7. python有哪些常见的开发环境_Python集成开发环境有哪些

    对于Python集成开发环境,你更喜欢哪一款? 0.Spyder Spyder是Python(x,y)的作者为它开发的一个简单的集成开发环境.和其他的Python开发环境相比,它最大的优点就是模仿MA ...

  8. python 模板引擎 对比_Python Web开发模板引擎优缺点总结

    做 Web 开发少不了要与模板引擎打交道.我陆续也接触了 Python 的不少模板引擎,感觉可以总结一下了. 一.首先按照我的熟悉程度列一下: pyTenjin:我在开发 Doodle 和 91 外教 ...

  9. python爬虫开发环境_python爬虫开发教程下载|Python爬虫开发与项目实战(范传辉 著)pdf 完整版_ - 极光下载站...

    Python爬虫开发与项目实战pdf扫描版下载.Python爬虫开发是一个Pthyon编程语言与HTML基础知识引领读者入门知识,重点讲述了云计算的相关内容及其在爬虫中的应用,进而介绍如何设计自己的爬 ...

  10. python是一种跨平台开源免费的高级动态编程语言吗_第1章 管中窥豹:Python概述免费阅读_Python程序设计开发宝典免费全文_百度阅读...

    1.1 Python是这样一种语言 有不少人说Python是一种"大蟒蛇语言".虽然在英语中Python确实有大蟒蛇的意思,但Python语言和大蟒蛇却没有任何关系.Python语 ...

最新文章

  1. access查询成绩小于5分_又一所大学公布成绩!5个人中有4人专业课130分以上,厉害了!...
  2. 设计模式之_动态代理_02
  3. jmeter多用户登录跨线程组操作传值
  4. 不同类型的变量在内存中存储的详细情况
  5. html自定义滚动条不占位,如何实现滚动条在各浏览器中不占用布局
  6. 直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解
  7. 需要在AndroidManifest中添加的条件
  8. 199-Pycharm相关
  9. MySQL查询当天、本周,本月,上一个月的数据
  10. [海康威视]-门禁设备告警布防代码C#实现
  11. linux 2.6下eeprom at24c08 i2c设备驱动(new style probe方式)
  12. windows7环境下VS2010中文版本配置MPI开发环境图文教程
  13. SharePoint常用CAML查询语法及举例
  14. delphi的时间Ttime,Tdatetime的信息
  15. r5 5500u和r5 4600u区别有多大 r55500u和r54600u哪个好
  16. 企业微信集成EAS流程助手
  17. 随机森林实战(分类任务+特征重要性+回归任务)(含Python代码详解)
  18. 安装完anaconda怎么创建新的虚拟环境
  19. Nginx实战学习之负载均衡
  20. ubuntu 安装360

热门文章

  1. java 微博阅读量怎么算,新浪微博阅读量怎么算
  2. 中国行政村边界数据、乡镇街道边界
  3. mysql 读写分离_详解MySQL读写分离
  4. mysql中自增的关键字_MySQL自增型字段的关键字是auto_increment。
  5. 如何更改微信标签名字_微信如何设置备注及标签 来学习吧
  6. 基于组态王6.55的电能监测系统
  7. 汽车用众大牌大屏幕导航仪凯立德地图升级方法
  8. u盘推荐知乎_u盘系统盘制作 知乎ghost安装教程
  9. 一键安装包php.ini,laravel 在windows中使用一键安装包步骤
  10. recv( )函数返回值说明