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 相关文章推荐
浅谈python新手中常见的疑惑及解答
Jun 14 Python
Python中的with语句与上下文管理器学习总结
Jun 28 Python
python2.7的编码问题与解决方法
Oct 04 Python
深入理解python中的atexit模块
Mar 07 Python
python用户管理系统的实例讲解
Dec 23 Python
python实现录音小程序
Oct 26 Python
使用python PIL库实现简单验证码的去噪方法步骤
May 10 Python
Django框架视图层URL映射与反向解析实例分析
Jul 29 Python
解决Python3下map函数的显示问题
Dec 04 Python
Python导入数值型Excel数据并生成矩阵操作
Jun 09 Python
python如何将图片转换素描画
Sep 08 Python
python 实用工具状态机transitions
Nov 21 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
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
php 防止表单重复提交两种实现方法
2016/11/03 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
laravel model 两表联查示例
2019/10/24 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
python发送伪造的arp请求
2014/01/09 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
Ajax的优点和缺点
2014/11/21 面试题
大学生入党自我鉴定
2013/10/31 职场文书
思想汇报范文
2013/11/04 职场文书
马智宇结婚主持词
2014/04/01 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
关于保护环境的建议书
2014/08/26 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
十岁生日答谢词
2015/01/05 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
centos7安装mysql5.7经验记录
2022/05/02 Servers