我有一个 C++ 服务器应用程序,它提供一个监听 TCP 端口供支持人员连接。他们可以发出命令并获得响应。从应用程序的角度来看,它工作正常。
当他们使用 telnet(1) 进行连接时,如果他们(出于某种原因)键入 ^C,就会出现我的问题。我的服务器看到 telnet 发送给我的已解析控制字符,我可以根据需要忽略或处理它们。但是 telnet 客户端本身进入某种状态,它停止将我的服务器的响应输出到客户端屏幕。
我知道我可以 1) 告诉他们不要使用 telnet 或 2) 告诉他们在 telnet 应用程序内或通过 执行 或其他。但如果可能的话,我更愿意做的是在服务器中使用正确的协议(protocol)序列进行响应,以使他们的客户端对后面的文本做正确的事情。这只是感觉对他们来说会是更好的用户体验。他们的工作已经够糟糕了。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) 的位置。
关于tcp - 远程登录协议(protocol) : response to break,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33835940/
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
我需要从站点抓取数据,但它需要我先登录。我一直在使用hpricot成功地抓取其他网站,但我是使用mechanize的新手,我真的对如何使用它感到困惑。我看到这个例子经常被引用:require'rubygems'require'mechanize'a=Mechanize.newa.get('http://rubyforge.org/')do|page|#Clicktheloginlinklogin_page=a.click(page.link_with(:text=>/LogIn/))#Submittheloginformmy_page=login_page.form_with(:act
尝试通过SSL连接到ImgurAPI时出现错误。这是代码和错误:API_URI=URI.parse('https://api.imgur.com')API_PUBLIC_KEY='Client-ID--'ENDPOINTS={:image=>'/3/image',:gallery=>'/3/gallery'}#Public:Uploadanimage##args-Theimagepathfortheimagetoupload#defupload(image_path)http=Net::HTTP.new(API_URI.host)http.use_ssl=truehttp.verify
一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su
Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好
我为Devise用户和管理员提供了不同的模型。我也在使用Basecamp风格的子域。除了我需要能够以用户或管理员身份进行身份验证的一些Controller和操作外,一切都运行良好。目前我有authenticate_user!在我的application_controller.rb中设置,对于那些只有管理员才能访问的Controller和操作,我使用skip_before_filter跳过它。不幸的是,我不能简单地指定每个Controller的身份验证要求,因为我仍然需要一些Controller和操作才能被用户或管理员访问。我尝试了一些方法都无济于事。看来,如果我移动authentica
我想用一个(自己的)omniauth提供商来衡量每秒可以登录多少次。我需要了解此omniauth/oauth请求的性能如何,以及此身份验证是否具有可扩展性?到目前为止我得到了什么:defperformance_auth(user_count=10)bm=Benchmark.realtimedouser_count.timesdo|n|forkdoclick_on'Logout'omniauth_config_mock(:provider=>"foo",:uid=>n,:email=>"foo#{n}@example.net")visit"/account/auth/foo/"enden
我有这段代码来跟踪远程日志文件:defdo_tail(session,file)session.open_channeldo|channel|channel.on_datado|ch,data|puts"[#{file}]->#{data}"endchannel.exec"tail-f#{file}"endNet::SSH.start("host","user",:password=>"passwd")do|session|do_tailsession,"/path_to_log/file.log"session.loop我只想在file.log中检索带有ERROR字符串的行,我正在尝
是否有chrome开关来抑制“外部协议(protocol)请求”?我正在使用selenium-ruby-watirwebdriver自动化应用程序。我在网上搜索了绕过此窗口和对话的解决方案:http://productforums.google.com/forum/#!topic/chrome/K22hXwRy6zQ概述了我们如何手动执行此操作。但是对于Selenium-Chrome-Ruby,我需要通过可能设置一个chrome开关(chorme开关列表:=http://src.chromium.org/svn/trunk/src/chrome/common/chrome_swit
如何将Confluence的“空间”导出为pdf文件?看起来Confluence5.0可能仍然支持使用XML-RPCAPI。不过,我找不到调用什么的示例。https://developer.atlassian.com/display/CONFDEV/Remote+API+Specification+for+PDF+Export#RemoteAPISpecificationforPDFExport-XML-RPCInformation该链接表示调用应以pdfexport为前缀,但没有列出任何调用或给出示例。 最佳答案 这可以使用Bob