我目前有一个结构如下的程序:
set_up_everthing()
while True:
if new_client_ready():
connect_new_client()
for client in clients:
if client.is_ready():
get_input_from(client)
update_program_state_based_on_input()
for client in clients:
if client.is_ready():
send_output_to(client)
clean_up()
目前,网络I/O使用套接字(sockets)和select函数实现,但我想重写它以使用asyncio库。我认为我已经理解了如何制作简单的asyncio程序。思路似乎是,当你想要进行一些I/O操作时,你需要
yield from
一个执行该操作的函数。所以,当主循环获得新的客户端时,它会执行yield from accept_client()
,当该客户端接收到信息时,它会执行yield from read_information()
,以此类推。然而,我无法找出如何将其与程序的其他部分结合起来。
asyncio
的简单但完整的端口转发实现:http://pastebin.com/g08YaJyz。 - jfs