asyncore基本介绍

asyncore是Python自带的原生模块,用于实现异步socket通信。它提供了事件循环和dispatcher类,帮助构建异步socket服务器和客户端。在事件循环中,通过select方法检测socket状态变化,触发相应的回调函数进行处理。编程时需继承dispatcher类并重写特定事件的方法。

一、asyncore框架的概念

asyncore模块是python自带的一个原生模块,提供简单的API以实现异步socket通信,并且为我们提供了异步socket服务器端和客户端的基础架构。

二、asyncore框架的原理

在这里插入图片描述

在使用asyncore框架时,需要注意两点:

  • 全局函数loop

  • 创建asyncore的事件循环

  • 在事件循环中调用底层的select方法来检测特定的网络信道,如果信道对应的socket对象状态发生改变,则自动产生一个高层次的事件信息,然后针对该信息调用的回调方法进行处理。

  • 基类dispatcher

  • dispatcher类是一个底层socket类的封装对象,必须在编程中继承于dispatcher类或其子类,dispatcher类里面已经定义好了socket通信中的各种事件,我们只需要重写特定的事件即可在该事件发生时实现自动回调处理。

三、程序实现

import asyncore,sys
'''
1.定义类并且继承自asyncore.dispatcher父类
2.根据业务需要实现类中的回调函数代码
3.创建对象并且调用asyncore.loop()开启事件循环
'''
class SocketClass(asyncore.dispatcher):
    def __init__(self):
        asyncore.dispatcher.__init__(self)
        self.create_socket()
        addr = ('127.0.0.1',6666)
        self.connect(addr)

    def handle_connect(self):
         print("服务器连接成功")

    def writable(self):
        return True

    def handle_write(self):
        self.send('hello'.encode())

    def readable(self):
        return False
    
    def handle_read(self):
        print(self.recv(1024))

    def handle_error(self):
        t,e,trace = sys.exc_info()
        print(e)
        self.close()

    def handle_close(self):
        print('连接关闭')
        self.close()

if __name__ == '__main__':
    SocketClass()
    asyncore.loop()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值