为什么 telnet 只在一个 Enter 上发送数据?
Why does telnet send data only on a Enter?
我在玩 Java 套接字,telnet 似乎是模拟 tcp 客户端的好程序。
我不明白的是为什么telnet只在输入时发送数据?我不是在寻找黑客让它立即发送数据(因为它是可用的(Send data over telnet without pressing enter)),但我想了解 telnet 的内部工作/设计,这似乎很适合。
这是一个实现选择。
基本上,对于 TCP 和 UDP,您可以在发送数据之前缓冲尽可能多的数据。目标是最大化有效负载大小,这样您就不会为您键入的每个键发送一个数据包,您可以使用自定义 Java telnet 客户端轻松实现这一点,该客户端 flush()
在每个字符上都有一个套接字.
Telnet 诞生为远程 shell 客户端,并且由于普通系统 shell 处理文本行,实现者发现等待用户键入 ENTER 是合理的 在刷数据到服务器之前,如果收到部分行
,服务器将等待回车return
不,telnet 不会在您按 Enter 时发送缓冲区,它会发送您键入的每个键。否则 vi
和其他一些编辑器将无法工作。让您相信这一点的是,当您按下回车键时,您会收到主机的响应。例如,您键入 ls –la
并在按 Enter 时收到响应,但 telnet 已将所有密钥一一发送,但在您按 Enter 时收到主机响应。大多数 telnet 模拟器都将 remote echo
选项设置为 true,这意味着主机会回显您键入的所有键。要在more filename
中测试此类型,然后按回车,它会显示一页信息,并等待一个键,您可以按Space:多一页,回车:多一行,或Q退出.网上关于telnet的资料很多,找RFC 854 Telnet Protocol Specification
.
我知道这是一个旧线程,但我只是想添加我的发现。 Telnet 程序完全控制逐字符或逐行发送的方式。
我在 MAC 上对此进行了测试,所以我不确定是否适用于其他平台,如果您按 ^] 可以键入 "mode character" 或 "mode line" 您可以更改此行为。
我在玩 Java 套接字,telnet 似乎是模拟 tcp 客户端的好程序。
我不明白的是为什么telnet只在输入时发送数据?我不是在寻找黑客让它立即发送数据(因为它是可用的(Send data over telnet without pressing enter)),但我想了解 telnet 的内部工作/设计,这似乎很适合。
这是一个实现选择。
基本上,对于 TCP 和 UDP,您可以在发送数据之前缓冲尽可能多的数据。目标是最大化有效负载大小,这样您就不会为您键入的每个键发送一个数据包,您可以使用自定义 Java telnet 客户端轻松实现这一点,该客户端 flush()
在每个字符上都有一个套接字.
Telnet 诞生为远程 shell 客户端,并且由于普通系统 shell 处理文本行,实现者发现等待用户键入 ENTER 是合理的 在刷数据到服务器之前,如果收到部分行
,服务器将等待回车return不,telnet 不会在您按 Enter 时发送缓冲区,它会发送您键入的每个键。否则 vi
和其他一些编辑器将无法工作。让您相信这一点的是,当您按下回车键时,您会收到主机的响应。例如,您键入 ls –la
并在按 Enter 时收到响应,但 telnet 已将所有密钥一一发送,但在您按 Enter 时收到主机响应。大多数 telnet 模拟器都将 remote echo
选项设置为 true,这意味着主机会回显您键入的所有键。要在more filename
中测试此类型,然后按回车,它会显示一页信息,并等待一个键,您可以按Space:多一页,回车:多一行,或Q退出.网上关于telnet的资料很多,找RFC 854 Telnet Protocol Specification
.
我知道这是一个旧线程,但我只是想添加我的发现。 Telnet 程序完全控制逐字符或逐行发送的方式。 我在 MAC 上对此进行了测试,所以我不确定是否适用于其他平台,如果您按 ^] 可以键入 "mode character" 或 "mode line" 您可以更改此行为。