最近看《python核心编程》,书中实现了一个简单的1对1的TCPserver,但是在实际使用中1对1的形势明显是不行的,所以研究了一下如何在server端通过启动不同的线程(进程)来实现每个链接一个线程。

其实python在类的设计上已经考虑到了这一方面的需求,我们只要在自己的server上继承一下SocketServer.BaseRequestHandler就可以了。

server端代码如下:

#!/usr/bin/env python

import SocketServer

from time import ctime

HOST = ''

PORT = 21567

ADDR = (HOST, PORT)

class MyRequestHandler(SocketServer.BaseRequestHandler):

def handle(self):

print '...connected from:', self.client_address

while True:

self.request.sendall('[%s] %s' % (ctime(),self.request.recv(1024)))

tcpServ = SocketServer.ThreadingTCPServer(ADDR, MyRequestHandler)

print 'waiting for connection...'

tcpServ.serve_forever()

客户端代码如下(基本和书中一模一样,只是把循环中的关闭链接注释掉了):

#!/usr/bin/env python

from socket import *

HOST = 'localhost'

PORT = 21567

BUFSIZ = 1024

ADDR = (HOST, PORT)

while True:

tcpCliSock = socket(AF_INET, SOCK_STREAM)

tcpCliSock.connect(ADDR)

data = raw_input('> ')

if not data:

break

tcpCliSock.send('%s\r\n' % data)

data = tcpCliSock.recv(BUFSIZ)

if not data:

break

print data.strip()

#tcpCliSock.close()

从客户端的代码可以看出,每次输入都会建立一次新的请求。

测试一下,启动server和client之后,在client中输入测试:

python写tcp服务器_用Python实现一个简单的多线程TCP服务器的教程相关推荐

  1. python写机器人程序_用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

  2. python写魔兽世界脚本_用python bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本...

    2019-03-11更新:原来NSIS脚本也可以禁用64位文件操作重定向的! 1.在安装脚本的开始处定义 LIBRARY_X64. !include "MUI.nsh" !incl ...

  3. 抖音是用python写的吗_用 Python 实现抖音尬舞机

    原标题:用 Python 实现抖音尬舞机 如今说到体感游戏,大家一定都不陌生,比如微软的 Kinect.任天堂的 Switch,都曾是游戏业的革命性产品.而另一款网红产品-抖音,也在去年底上线过一个& ...

  4. python写mysql脚本_使用python写一个监控mysql的脚本,在zabbix web上加上模板

    使用python写一个监控mysql的脚本,在zabbix web上加上模板: ##先使用MySQLdb的接口关联数据库. [root@cml python]# cat check_Mysql_cus ...

  5. 用python写聊天机器人_用Python 写一个机器人陪你聊天(文尾有彩蛋)

    工作一忙,原来秉烛夜谈的好友现在都很少聊天,微信都成了微信群的天下,鲜有微信好友给你发消息,想要主动发却也找不到开题话题,怎么办?用Python写一个机器人陪自己聊聊天吧.以下是源码及解析,小白都看得 ...

  6. 用python写投票程序_大话python最终篇,web.py 开发的投票程序demo

    概述 开发语言         python Web开发框架  web.py 前端开发框架   vuejs+elementui 数据库              mysql 设计思路 首先是数据库设计 ...

  7. 用python写shell脚本_应用python编写shell脚本

    今天同事叫我编写一个shell脚本.话说,虽然我受*nix的影响甚深,但是对于*nix里随处可见的sh脚本却是讨厌之极.为什么讨厌呢?首先是因为sh脚本那莫名其妙的语法,感觉就像随写随扔的程序,完全没 ...

  8. python写硬件驱动_用Python驱动开源硬件|课程开发者的对话

    随着中小学创客教育的推进,开源硬件逐步被教育工作者所了解并进入了中小学课堂.从一开始的小规模应用到区域级别的大规模推广,开源硬件因为其价格低廉.性能强大和资源丰富,加上扩展性好,越来越得到教师们的认可 ...

  9. python写采集程序_用python写的一个wordpress的采集程序

    在学习python的过程中,经过不断的尝试及努力,终于完成了第一个像样的python程序,虽然还有很多需要优化的地方,但是目前基本上实现了我所要求的功能,先贴一下程序代码: 具体代码如下: #! /u ...

最新文章

  1. 辰星计划 2021 | 璀璨起航,旷视春季实习生招募开启
  2. 非极大值抑制(Non-maximum suppression)在物体检测领域的应用
  3. iOS开发--一些UITabBarItem属性的设置[转]
  4. Request 接收参数乱码原理解析
  5. MinGw+Msys搭建环境 编译ffmpeg
  6. 硅谷观察者眼中的亚洲
  7. WPF中自动增加行(动画)的TextBox
  8. [Ajax] 超于json2.js的版本json3.js
  9. haproxy + keepalived + mycat 高可用与负载均衡集群配置 centos7
  10. c语言http协议头字符串,c语言http请求解析表单内容
  11. Yii2.0 rules验证规则大全
  12. 其他电脑连接本地mysql数据库_在局域网内,如何让其他电脑连接我们自己的本地mysql数据库...
  13. Mysql 省市县乡 地址分割
  14. TM1620 led显示芯片用stm8来驱动
  15. win 10计算机查找大文件,教你如何在Win10系统中查找大文件?
  16. 【PCI】PCI驱动匹配(四)
  17. 快速调整毕业论文格式:调整参考文献的引用样式和段落格式
  18. 电影票房预测-kaggle项目Python项目
  19. 知识图谱构建中的抽取方法
  20. 有苦有乐的算法 --- 一个数组中,有两种数出现了奇数次,其余数都出现了偶数次,找到这两种数

热门文章

  1. day23 java的异常
  2. VueSummary_note
  3. idea错误提示不明显_微信公众号扫一扫功能提示:10003 redirect_uri域名与后台配置不一致错误解决方案...
  4. 计算机专业理论知识试题,计算机专业理论试题第II卷(非选择题)
  5. java 7 泛型_Java(7)泛型
  6. java中封装的好处_编程中封装的作用/优点
  7. 计算机中i o接口,计算机组成原理 输入输出(I/O)I/O 接口(I/O 控制器)
  8. linux查看火狐进程,Firefox 终于用上多进程技术了
  9. 无法使用集合初始化_Java集合类解析之Hashtable
  10. 用python可以解决什么问题_学 Python 能帮你解决什么问题 ?