Python中asyncore的用法实例

298次阅读  |  发布于5年以前

本文实例讲述了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程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8