telnet 协议:对中断的响应
telnet protocol: response to break
我有一个 C++ 服务器应用程序,它提供了一个侦听 TCP 端口供支持人员连接。他们可以发出命令并获得响应。从应用程序的角度来看,它工作正常。
我的问题出现在他们使用 telnet(1) 连接时,如果他们(出于某种原因)键入 ^C。我的服务器看到 telnet 发送给我的已解析控制字符,我可以忽略或按我认为合适的方式处理它们。但是 telnet 客户端本身进入某种状态,它停止将我的服务器的响应输出到客户端屏幕。
我知道我可以 1) 告诉他们不要使用 telnet 或 2) 告诉他们在 telnet 应用程序中执行 toggle autoflush
,或通过 ~/.telnetrc
或其他。但是,如果可能的话,我 更愿意 做的是在服务器中使用正确的协议序列进行响应,以使他们的客户端对后面的文本做正确的事情。这只是感觉对他们来说会是更好的用户体验。他们的工作已经够糟糕了。
这可能吗?我已经通过RFC并不清楚。从我自己以前用过telnet,这个感觉好像是可以的,但是我可能记不太清了。
IAC DO TIMING-MARK
(FF FD 06
)背后的想法是抑制被IAC IP
中断进程(FF F4
)命令中断的进程的输出.通过这种方式,telnet 客户端程序隐藏了用户的所有输出,直到它收到正确的时间标记或服务器不支持时间标记的通知。
您可能会也可能不会对 IAC IP
做出回应或采取行动,但您必须对 IAC DO TIMING-MARK
做出回应。在您的情况下,最简单的方法是通过 IAC WONT TIMING-MARK
(FF FC 06
) 回应您忽略了它,并且客户端应该继续正常显示所有输出。
如果你真的终止了当前的工作,那么你应该刷新你的缓冲区,然后用 IAC WILL TIMING-MARK
响应,这意味着客户端将丢弃从用户按下 ^C
的那一刻起所有服务器的输出到流中找到 IAC WILL TIMING-MARK
(FF FB 06
).
的位置
我有一个 C++ 服务器应用程序,它提供了一个侦听 TCP 端口供支持人员连接。他们可以发出命令并获得响应。从应用程序的角度来看,它工作正常。
我的问题出现在他们使用 telnet(1) 连接时,如果他们(出于某种原因)键入 ^C。我的服务器看到 telnet 发送给我的已解析控制字符,我可以忽略或按我认为合适的方式处理它们。但是 telnet 客户端本身进入某种状态,它停止将我的服务器的响应输出到客户端屏幕。
我知道我可以 1) 告诉他们不要使用 telnet 或 2) 告诉他们在 telnet 应用程序中执行 toggle autoflush
,或通过 ~/.telnetrc
或其他。但是,如果可能的话,我 更愿意 做的是在服务器中使用正确的协议序列进行响应,以使他们的客户端对后面的文本做正确的事情。这只是感觉对他们来说会是更好的用户体验。他们的工作已经够糟糕了。
这可能吗?我已经通过RFC并不清楚。从我自己以前用过telnet,这个感觉好像是可以的,但是我可能记不太清了。
IAC DO TIMING-MARK
(FF FD 06
)背后的想法是抑制被IAC IP
中断进程(FF F4
)命令中断的进程的输出.通过这种方式,telnet 客户端程序隐藏了用户的所有输出,直到它收到正确的时间标记或服务器不支持时间标记的通知。
您可能会也可能不会对 IAC IP
做出回应或采取行动,但您必须对 IAC DO TIMING-MARK
做出回应。在您的情况下,最简单的方法是通过 IAC WONT TIMING-MARK
(FF FC 06
) 回应您忽略了它,并且客户端应该继续正常显示所有输出。
如果你真的终止了当前的工作,那么你应该刷新你的缓冲区,然后用 IAC WILL TIMING-MARK
响应,这意味着客户端将丢弃从用户按下 ^C
的那一刻起所有服务器的输出到流中找到 IAC WILL TIMING-MARK
(FF FB 06
).