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

1177

被折叠的 条评论
为什么被折叠?



