socket网络编程实战-斗鱼弹幕获取

asyncore模块 介绍 这个模块为异步socket的服务器客户端通信提供简单的接口。 该模块提供了异步socket服务客户端和服务器的基础架构。 相比python原生的socket api,asyncore具备有很大的优势,asyncore对原生的socket进行封装,提供非常简洁优秀的接口,利用asyncore覆写相关需要处理的接口方法,就可以完成一个socket的网络编程,从而需要处理复杂的socket网络状况以及多线程处理等等。 实现流程 客户端 Socket 开发基本使用 1.定义类继承自asyncore.dispatcher 2.实现类中的回调代码 实现构造函数 调用父类方法 创建 Socket对象 连接服务器 实现handle_connect回调函数 当socket连接服务器成功时回调该函数 实现writable回调函数 描述是否有数据需要被发送到服务器。返回值为True表示可写,False表示不可写,如果不实现默认返回为True,当返回True时,回调函数handle_write将被触发 实现handle_write 回调函数 当有数据需要发送时(writable回调函数返回True时),该函数被触发,通常情况下在该函数中编写send方法发送数据 实现readable回调函数 描述是否有数据从服务端读取。返回True 表示有数据需要读取,False表示没有数据需要被读取,当不实现默认返回为True,当返回True 时,回调函数handle_read将被触发 实现handle_read 回调函数 当有数据需要读取时触发(readable回调函数返回True 时),该函数被触发,通常情况下在该函数中编写recv方法接收数据 实现handle_error回调函数 当程序运行过程发生异常时回调 实现handle_close回调函数 当连接被关闭时触发 3.创建对象并且执行asyncore.loop进入运行循环 timeout表示一次循环所需要的时长 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 import asyncore import sys # 定义类继承自 asyncore.dispather class scoket_client(asyncore.dispatcher): # 实现类中的回调代码 def __init__(self, host, port): # 调用父类的方法 asyncore.dispatcher.__init__(self) # 创建 Scoket 服务器 self.create_socket() # 连接地址 address = (host, port) self.connect(address) pass # 实现handle_connect回调函数 def handle_connect(self): print("连接成功") # 实现writable函数 def writable(self): return False # 实现handle_write回调函数 def handle_write(self): # 内部实现对服务器发送数据代码 # 调用 send 方法发送数据,参数是字节数据 self.send("hello world".encode('utf-8')) # self.send("hello world") # 实现readable回调函数 def readable(self): return True # 实现handle_read回调函数 def handle_read(self): # 主动接收数据 result = self.recv(1024) print(result) # 实现handle_error回调函数 def handle_error(self): # 编写处理错误方法 t, e, trace = sys.exc_info() # 实现handle_close回调函数 def handle_close(self): print("连接关闭") self.close() # 创建对象并且执行asyncore.loop 进入循环 if __name__ == '__main__': client = scoket_client('127.0.0.1', 9000) # 开始启动运行循环 asyncore.loop(timeout=5) ...

5 min · 2351 words · Luenci