Python中asyncore的用法实例


Posted in Python onSeptember 29, 2014

本文实例讲述了python中asyncore模块的用法,分享给大家供大家参考。具体方法如下:

实例代码如下:

##asyncore 
 
import asyncore,socket 
 
######################################################################## 
class AsyncGet(asyncore.dispatcher): 
  """ 
  the defined class 
  """ 
 
  #---------------------------------------------------------------------- 
  def __init__(self, host): 
    """Constructor""" 
    asyncore.dispatcher.__init__(self) 
    self.host = host 
    self.create_socket(socket.AF_INET, socket.SOCK_STREAM) 
    self.connect((host, 80)) 
    self.request = "Get /index.html HTTP/1.0\r\n\r\n" 
    self.outf = None 
    print "连接 :", host 
     
  def handle_connect(self): 
    print 'connect:', self.host 
    pass 
  def handle_read(self): 
    if not self.outf: 
      print '正在连接:',self.host 
    self.outf = open("%s.txt" % self.host, 'wb') 
    data = self.recv(8192) 
    if data: 
      self.outf.write(data) 
     
    pass 
  def handle_writebale(self): 
    return len(self.request) 
     
     
  def handle_write(self): 
    num_sent = self.send(self.request) 
    pass 
   
  def handle_close(self): 
    asyncore.dispatcher.close(self) 
    print "socket close in:",self.host 
    if self.outf: 
      self.outf.close() 
    pass 
   
if __name__ == "__main__": 
  AsyncGet("www.python.org") 
  asyncore.loop() 
 
import asyncore,socket 
 
######################################################################## 
class AsyncGet(asyncore.dispatcher): 
  """ 
  the defined class 
  """ 
 
  #---------------------------------------------------------------------- 
  def __init__(self, host): 
    """Constructor""" 
    asyncore.dispatcher.__init__(self) 
    self.host = host 
    self.create_socket(socket.AF_INET, socket.SOCK_STREAM) 
    self.connect((host, 80)) 
    self.request = "Get /index.html HTTP/1.0\r\n\r\n" 
    self.outf = None 
    print "连接 :", host 
     
  def handle_connect(self): 
    print 'connect:', self.host 
    pass 
  def handle_read(self): 
    if not self.outf: 
      print '正在连接:',self.host 
    self.outf = open("%s.txt" % self.host, 'wb') 
    data = self.recv(8192) 
    if data: 
      self.outf.write(data) 
     
    pass 
  def handle_writebale(self): 
    return len(self.request) 
     
     
  def handle_write(self): 
    num_sent = self.send(self.request) 
    pass 
   
  def handle_close(self): 
    asyncore.dispatcher.close(self) 
    print "socket close in:",self.host 
    if self.outf: 
      self.outf.close() 
    pass 
   
if __name__ == "__main__": 
  AsyncGet("www.python.org") 
  asyncore.loop()

结果文件的内容为:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://www.python.org">here</a>.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at dinsdale.python.org Port 80</address>
</body></html>

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Mac下Supervisor进程监控管理工具的安装与配置
Dec 16 Python
Python的Django框架中的Context使用
Jul 15 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
python+django快速实现文件上传
Oct 24 Python
Python实现FTP上传文件或文件夹实例(递归)
Jan 16 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
Ubuntu下Anaconda和Pycharm配置方法详解
Jun 14 Python
Python实现Selenium自动化Page模式
Jul 14 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
python多进程并行代码实例
Sep 30 Python
python周期任务调度工具Schedule使用详解
Nov 23 Python
python提示No module named images的解决方法
Sep 29 #Python
python服务器端收发请求的实现代码
Sep 29 #Python
python利用beautifulSoup实现爬虫
Sep 29 #Python
Python中为feedparser设置超时时间避免堵塞
Sep 28 #Python
跟老齐学Python之从格式化表达式到方法
Sep 28 #Python
跟老齐学Python之print详解
Sep 28 #Python
跟老齐学Python之正规地说一句话
Sep 28 #Python
You might like
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
转一个日期输入控件,支持FF
2007/04/27 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
Python实现的爬虫功能代码
2017/06/24 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
Python如何调用外部系统命令
2019/08/07 Python
python getpass实现密文实例详解
2019/09/24 Python
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
优秀食品类广告词
2014/03/19 职场文书
小学清明节活动总结
2014/07/04 职场文书
励志演讲稿300字
2014/08/21 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
Redis keys命令的具体使用
2022/06/05 Redis
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android