【发布时间】:2021-05-25 08:08:33
【问题描述】:
我正在使用 TCL 作为语言的环境中编写测试代码。通过 raw socked 向设备发送命令后,我收到响应,有时是多行(设备终端不是很稳定)。
下面的代码只显示了一行。如果响应确实不止一行,如何轻松更改为返回多行?
set connection [socket $session_ip $session_port]
puts $connection "my_command_here"
flush $connection
puts [gets $connection]
作为一种解决方法,我重复了最后两个步骤
flush $connection
puts [gets $connection]
不幸的是,如果只有一条线路响应,它就会冻结。尝试使用 read 而不是 gets 但没有正确的结果。
【问题讨论】:
-
定义“没有正确的结果”。对等端是否发送行?
-
它冻结而没有响应。
-
怎么知道对方发了多行回复?您是否有一些代码可以查看一行并说“这条线的末端被切断了”? (我问是因为该代码将使编写用于读取输入和重建原始行的异步处理程序非常更容易编写。)
-
我知道通过在设备上进行手动操作 - 已经多次观察到这种行为(响应一条或多条线)。
标签: sockets tcl response multiline