判断题
723.telnetlib 中 telnet.read.all( )的作用时读取所有数据直到EOF,如果回显没有返回EOF则会一直阻塞。
A
正确
B
错误
答案解析
正确答案:B
解析:
**解析:**
该说法是**错误**的。
在 Python 2 的 `telnetlib` 模块中(Python 3 中已移除或重构,通常指代经典行为),`read_all()` 方法的行为描述存在以下关键误区:
1. **阻塞机制与 EOF 的关系**:
`read_all()` 确实会读取数据直到遇到 EOF(End Of File,即连接关闭)。但是,Telnet 协议通常用于交互式会话,服务器端往往不会主动关闭连接(即不发送 EOF),而是保持连接打开以等待后续命令。因此,如果服务器不回送 EOF(不关闭连接),`read_all()` **确实会一直阻塞**,直到连接断开或超时(如果设置了超时)。从这个角度看,后半句“如果回显没有返回EOF则会一直阻塞”在特定语境下是对现象的描述,但前半句关于“作用”的定义不够准确,且容易误导用户认为这是获取回显的常规方式。
2. **更核心的错误点:API 名称与用途**:
* **方法名错误**:`telnetlib` 中并没有 `read.all()` 这个方法(注意中间是点号还是下划线)。正确的方法名是 **`read_all()`**(下划线)。题目中写作 `read.all()` 是语法错误。
* **实际使用场景**:在 Telnet 编程中,我们通常不使用 `read_all()` 来获取命令回显,因为如前所述,它需要连接关闭才能返回。常用的方法是:
* `read_until(expected_string, timeout)`:读取直到遇到特定字符串或超时。
* `read_some()`:读取当前可用的数据,不阻塞等待 EOF。
* `expect(list_of_regexps, timeout)`:根据正则表达式匹配读取。
3. **结论**:
虽然 `read_all()` 的确会读到 EOF,但题目中的方法名书写错误(`read.all` 应为 `read_all`),且在实际 Telnet 交互中,依赖 EOF 来结束读取是不现实的(因为交互式会话通常不关闭连接),因此将其描述为“读取所有数据直到EOF”作为常规回显获取手段是不恰当的,容易导致程序无限阻塞。更重要的是,方法名本身的语法错误使得该陈述直接错误。
**正确答案:错误**
题目纠错
华为ICT练习考试题库
相关题目
单选题
237.如图所示,关于OSPF的拓扑和配置,下列说法中正确的是 
单选题
236.如下图所示,主机A和主机B使用哪种网络设备可以实现通信? 
单选题
235.某台路由器运行OSPF协议,并且没有指定 Router ID,所有接口的IP地址如下,则此路由器OSPF 协议的Routerid为? 
单选题
234.交换机发送的配置BPDU中,哪一个桥ID不可能会出现?
单选题
233.OSPF协议使用哪种报文向邻居发送LSA?
单选题
232.管理员在某台路由器上配置OSPF,但该路由器上未配置loopback接口,则关于Router ID的描述正确的是?
单选题
231.以下关于Python说法不正确的是?
单选题
230.在AP上为区分不同的用户提供不同的网络服务,可以在通过配置以下哪项内容实现?
单选题
229.为让STA获取AP上的SSID相关信息,AP采用以下哪种报文主动对外声明无线网络SSID信息?
单选题
228.当AP与AC处于不同的三层网络时推荐使用何种方式让AP发现AC?
