【python】使用asyncore进行异步通信

参考博文:http://blog.csdn.net/livefun/article/details/8721772

参考博文:https://www.cnblogs.com/tomato0906/articles/4807774.html

Asyncore是对服务器端socket的一个封装,主要解决多用户通信的问题。

用户需要继承asyncore.dispatcher, 并且对其一些方法进行重写。

一般来说需要重写的方法:

handle_read: 当socket有可读数据的时候执行这个方法,是否有可读数据看readable()方法的返回结果

handle_write: 当socket有可写数据的时候执行这个方法,是否有可写数据看writable()方法的返回结果

handle_expt: 当socket出现OOB异常的时候执行这个方法

handle_connect: 当有客户端连接的时候,执行该方法

handle_close: 当连接关闭的时候执行这个方法

handle_accept: 当作为server_socket监听的时候,有客户端连接的时候,用这个方法处理

可使用的方法:

create_socket(family, type): 创建一个套接字并且与对象绑定

connect(address): 连接一个socket server

send(data): 发送数据

recv(buffer_size): 接受数据到内存缓存

listen(backlog): socket_server 开始监听

bind(address): socket_server 绑定端口

accept(): socket_server接受客户端连接

close(): 关闭socket

一个典型的服务器例子:

init里面:

  create_socket(INET, STREAM)

  set_reuse_addr()

  bind('', 12345)

  listen(5)

handle_accept:

  accept()

  print

init server

asyncore.loop()

原文地址:https://www.cnblogs.com/yesuuu/p/8001436.html