python中socket编程poll的使用
来源:互联网 发布:twisted windows 编辑:程序博客网 时间:2024/05/03 09:14
废话不说,看代码和结果
这个是服务器端的
点击(此处)折叠或打开
- # server_p.py
- import socket, select
- s = socket.socket()
- host = socket.gethostname()
- port = 1234
- s.bind((host, port))
- s.setblocking(False)
- fdmap = {s.fileno():s}
- s.listen(5)
- p = select.poll()
- p.register(s)
- while True:
- events = p.poll()
- print 'this is out of evennt.............'
- for fd, event in events:
- if fd in fdmap:
- print 'this is the accept()'
- try:
- c, addr = s.accept()
- print 'Got connection from', addr
- print 'after accept'
- p.register(c)
- fdmap[c.fileno()] = c
- try:
- data = c.recv(1024)
- print data
- except Exception, e:
- print 'this is the except:', e
- except Exception, e:
- print 'this is the exception:', e
- elif event & select.POLLIN:
- print 'this is the event'
- data = fdmap[fd].recv(1024)
- if not data:
- print fdmap[fd].getpeername(), 'disconnected'
- p.unregister(fd)
- del fdmap[fd]
- else:
- print data
点击(此处)折叠或打开
- # client.py
- import socket, time
- s = socket.socket()
- host = socket.gethostname()
- port = 1234
- s.connect((host,port))
- s.send('this is the client')
- time.sleep(5)
- s.send('hahah----------------------------')
- s.close()
诡异的结果啊,
结果就是,服务器(客户端没啥好说的,不作说明,都指服务器),p.poll()不会阻塞啊,而且不管有没有连接都会进入里面的循环中,这意味着events竟然一直有东西,我去啊啊,这是怎么回事,好吧,先澄清一点,就是,这里的server是有问题的,elif分支完全不会进去,前面if fd in fdmap感觉一点用逗没有,不如换为if fdmap[fd] is s,即判断该事件的socket是不是正在被监听的socket,从而判断是有连接请求过来,还是其他已经建立好的连接有消息发过来。这里太诡异了
来份正常的代码(server):
点击(此处)折叠或打开
- import socket, select
- s = socket.socket()
- host = socket.gethostname()
- port = 1234
- s.bind((host, port))
- fdmap = {s.fileno():s}
- s.listen(5)
- p = select.poll()
- p.register(s)
- while True:
- events = p.poll()
- print 'this is out of accept()----------'
- for fd, event in events:
- fdc = fdmap[fd]
- if fdc is s:
- print 'this is the accept()'
- c, addr = s.accept()
- print 'Got connection from', addr
- p.register(c)
- fdmap[c.fileno()] = c
- elif event & select.POLLIN:
- data = fdmap[fd].recv(1024)
- if not data:
- print fdmap[fd].getpeername(), 'disconnected'
- p.unregister(fd)
- del fdmap[fd]
- else:
- print data
Python 中 == 是判断值是否相等,is 是判断同一性,换句话说,x is y 相当于 id(x) == id(y)
每个对象都有一个独一无二的id吧。。但是“解释器在对值很小的int和很短的字符串的时候做了一点小优化,只分配了一个对象,让它们id一样了”|
这里有一篇文章,可以参考一下:http://my.oschina.net/cprime/blog/501
好的,话题拉回来,poll这里还是单进程来处理事件的,如果一个事件占用时间很长的话,那其他的事件只能等了,比如在30行前面加上time.sleep(5),这样其他不管是连接请求,还是消息请求,全得等5s。嗯,就是这样!
0
上一篇:同一端口如何区分不同的Socket
下一篇:Windows平台安装Beautiful Soup
相关热门文章
- ?太极ios8.1.1完美越狱工具 免...
- 爱奇艺易转码 v6.0.0.7 官方版...
- 破解wifi密码软件电脑版 v1.0....
- ?wifi连接管理器电脑版 v1.5.1...
- 小米手机助手 v2.1.0 官方版...
- python 自动化测试平台 Robot ...
- python snmp 自动化2-在python...
- python 自动化测试平台 Robot ...
- 自动化测试详细测试计划 模板...
- python snmp 自动化3-修改pyth...
- 如何提高中文域名网站权重呢?...
- windows有发展前景吗
- 谁能够帮我解决LINUX 2.6 10...
- 现在的博客积分不会更新了吗?...
- shell怎么读取网页内容...
给主人留下些什么吧!~~
评论热议
0 0
- python中socket编程poll的使用
- python socket的select,poll,epoll
- 在python中编写socket服务端模块(二):使用poll或epoll
- [Python网络编程]使用select,poll
- python中Socket的使用
- Python网络编程基础笔记-poll实现非阻塞socket
- Socket编程实践(10) --select的限制与poll的使用
- Socket编程实践(9) --select的限制与poll的使用
- Socket编程实践(10) --select的限制与poll的使用
- python的socket编程
- python的socket编程
- Python网络编程中的select 和 poll I/O复用的简单使用
- Python网络编程中的select 和 poll I/O复用的简单使用
- Python网络编程中的select 和 poll I/O复用的简单使用
- Python网络编程中的select 和 poll I/O复用的简单使用
- Python网络编程中的select 和 poll I/O复用的简单使用
- Python网络编程中的select 和 poll I/O复用的简单使用
- PYTHON中UDP,socket的使用。
- 随笔1
- 单机最大tcp连接数
- Linux 命令行操作快捷键(命令行复制粘贴快捷键)
- 同一端口如何区分不同的Socket
- 【星座】摩羯女之终极分析
- python中socket编程poll的使用
- Windows平台安装Beautiful Soup
- 使用memcached进行内存缓存
- Putty保存配置
- bat脚本启动程序
- 【c++程序】重载加法运算符operator+
- 折腾二维数组
- const char*, char const*, char*const的区别
- .net学习框架
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
弧形铝合金窗
弧形楼梯效果图
弧形自动门价格
弧形金属线槽
弧形阳台吊顶
过道弧形吊顶
弧形拉网展架
弧形阳台设计效果图
弧形窗户窗帘效果图
大弧形声屏障
弧形卫生间隔断
弧形玄关装修效果图
怎么自己剪弧形刘海
弧形阳台怎么装修
弧形吊顶效果图
弧形楼梯图片
弧形吧台酒柜
弧形电视墙图片
弧形建筑放线
客厅弧形吊顶效果图
弧形吊顶图片
弧形窗帘怎么做
弧形窗户怎么装修
弧形书桌图片
弧形门头图片
弧形吧台图片
弧形的周长公式
彩虹为什么是弧形的
埋弧自动焊
初学氩弧焊点焊技巧
直缝埋弧焊钢管
氩弧焊送丝正确手法
氩弧焊电流调节一览表
氩弧焊工人一月多少钱
埋弧焊丝
氩弧焊技术要领
双面埋弧焊钢管
钨极氩弧焊
氩弧焊枪各种配件图
埋弧焊焊丝
埋弧焊螺旋钢管价格