python之多并发socket
先看socket多并发的服务端的代码,这里是用多线程实现的多并发socketserver
import socketserver # socketserver有四个基本的类,后两个不常用,这4个类处理并发请求都是同步的,他们其实不是多线程的,他们只是把socke封装了一下,加了一些方法,这里还没有实现多并发和多线程
#这些方法不适用每个请求都耗费长时间才能完成 # socketserver.TCPServer
# socketserver.UDPServer
# socketserver.UnixStreamServer
# socketserver.UnixDatagramServer
# socketserver.ForkingMixIn
# socketserver.ThreadingMixIn # ========================================================================================================
# 我们真正要用的下面这4个方法
# 多进程的socketserver
# socketserver.ForkingTCPServer
# socketserver.ForkingUDPServer #多进程的socketserver
# socketserver.ThreadingTCPServer
# socketserver.ThreadingUDPServer # ======================================================================================================== class MyTcpServerClass(socketserver.BaseRequestHandler):
# 先定义一个自己的socket的类,所有和客户端交互的动作全部要在这里写,默认这里是空白的,且必须写handle这个防范
def handle(self):
print("等待新的连接:")
print("新的客户端:",self.client_address)
while True:
try:
data = self.request.recv(1024)
print("客户端:",self.client_address,str(data,encoding="utf-8"))
self.request.send(data)
except Exception:
print("客户端[%s]连接已经断开,服务端也将断开" %(self.client_address[1]))
self.request.close()
break if __name__ == '__main__':
ip_bind = ("127.0.0.1",9000)
server = socketserver.ThreadingTCPServer(ip_bind,MyTcpServerClass)
# 每次来一个连接,就构建一个实例
server.serve_forever()
# 让这个server一直运行
然后看下客户端的代码
import socket
ip_bind = ("127.0.0.1",9000) c = socket.socket()
c.connect(ip_bind)
while True:
c_input = input("客户端:")
c.send(bytes(c_input,encoding="utf-8"))
s_send = c.recv(1024)
print("服务端:",str(s_send,encoding="utf-8"))
python之多并发socket的更多相关文章
- python之多并发socket(zz)
本文转载自:http://www.cnblogs.com/bainianminguo/p/7337210.html 先看socket多并发的服务端的代码,这里是用多线程实现的多并发socketserv ...
- Python中的并发编程
简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态.打开文件列表.追踪指令执行情况的程序指针以及一个保存局部变量的调用栈.通常情况下,一个进程依照一个单序列控制流顺序执 ...
- Python之路,Day8 - Socket编程进阶
Python之路,Day8 - Socket编程进阶 本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...
- Python开源异步并发框架
Python开源异步并发框架的未来 2014年3月30日,由全球最大的中文IT社区CSDN主办的“开源技术大会·” (Open Source Technology Conference ,简称OSTC ...
- python学习笔记之socket(第七天)
参考文档: 1.金角大王博客:http://www.cnblogs.com/alex3714/articles/5227251.html ...
- Python几种并发实现方案的性能比较
http://blog.csdn.net/permike/article/details/54846831 Python几种并发实现方案的性能比较 2017-02-03 14:33 1541人阅读 评 ...
- 用 Python 理解 Web 并发模型
用 Python 理解 Web 并发模型 http://www.jianshu.com/users/1b1fde012122/latest_articles 来源:MountainKing 链接: ...
- python学习之并发编程
目录 一.并发编程之多进程 1.multiprocessing模块介绍 2.Process类的介绍 3.Process类的使用 3.1 创建开启子进程的两种方式 3.2 获取进程pid 3.3验证进程 ...
- 百万年薪python之路 -- 并发编程之 多线程 二
1. 死锁现象与递归锁 进程也有死锁与递归锁,进程的死锁和递归锁与线程的死锁递归锁同理. 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因为争夺资源而造成的一种互相等待的现象,在无外力的作用 ...
随机推荐
- Work01
7101:我是最酷的张绥:我的爱是弹吉他,唱歌,游泳,打篮球...: 我的博客是:https://www.cnblogs.com/Mrzs/ 我的码云个人主页是:https://gitee.com/s ...
- linux date -d参数用法
最近偶为了写一个调整时间的shell而绞尽脑汁,结果在某一天#info data这里面看到了data -d参数的灵活用法,真是欣喜若狂.好东西要保存,整理整理: * To print the date ...
- javascript创建对象之构造函数模式(二)
对上一章节的工厂模式进行代码重写 function Human(name, sex) { this.name = name; this.sex = sex; this.say = function ( ...
- Hibernate 零散知识点
1 get方法和load方法查询时的区别: 如果在缓存中没有找到相应的对象,get会直接访问数据库并返回一个完全初始化的对象,过程中可能涉及多次数据库调用:而load会返回一个代理对象,只有在对象ge ...
- Introducing Deep Reinforcement
The manuscript of Deep Reinforcement Learning is available now! It makes significant improvements to ...
- php 学习笔记 设计和管理
代码管理 文件路径.数据库名.密码禁止 hard coded 避免重复代码在多个页面复制粘贴 Gang of Four eXtreme Programming 的主要原则是坚决主张测试是项目成功的关键 ...
- Redis如何存储对象与集合示例详解
前言 大家都知道在项目中,缓存以及mq消息队列可以说是不可或缺的2个重要技术.前者主要是为了减轻数据库压力,大幅度提升性能.后者主要是为了提高用户的体验度,我理解的是再后端做的一个ajax请求(异 ...
- 并发基础(九) java线程的终止与中断
1.简单了解一下:为何不赞成使用 Thread.stop.Thread.suspend 和 Thread.resume? suspend .resume.stop方法分别完成了线程的暂停.恢复.终 ...
- 转载:关于java关键字transient
今天在map源码中看到这个关键字 百度看一下 转载记录下 源文:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html 1. transient的作 ...
- python写个御剑
前言: 今天师傅叫我,写个python版的御剑.然后我之前也写过 不过不怎么样,这次有新想法. 思路: 御剑:读取御剑配置文件里的所有路径,加上用户要扫描的url.进行批量检测,如果状态码为200并且 ...