python telnetlib内容输出_python telnetlib

基本原理

要明白 telnetlib 中各个 read 函数的意义,首先要了解 telnetlib 的工作原理。 telnetlib 首先通过 socket 连接从网络接收数据,把数据存储到自己的 raw queque 中,然后对其进行(telnet 协议相关的)处理(cook)。处理结果存放在 cooked queue 中供应用程序取用。整个过程如下图.

---------, ,----------, ,-----, ,--------, ,-----------,

network |=====>|socket buf|=====>|raw-q|=====>|cooked-q|=====>|application|

---------` `----------` `-----` `--------` `-----------`

| | | | |

| | | | |

| | | |---------------|

| | | read_very_lazy |

| | | |

| | |------------------------------|

| | read_lazy |

| | |

| |------------------------------------------------|

| read_very_eager/read_eager |

| |

|----------------------------------------------------------------|

| read_until/read_all/read_some/expect |

各 read 函数的意义

各种 read 函数的不同就在于它们所包涵的阶段不同。

read_very_lazy只从 cookedq 读取已处理好的数据。read_lazy如果 rawq 有数据,对 rawq 里的数据进行处理,然后从cookedq 中读取处理好的数据。read_eager从系统的 socket buffer 接受数据(即非阻塞模式read_very_eager与 read_eager 类似。不同之处在于 read_eager 只要从

cookedq 成功读取到数据就返回,而 read_very_eager 会试图读尽可能多的数据。其它剩下的 read 函数基本上就是阻塞式等待网络数据,直到读到所需数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值