浏览器远程telnet登陆

在项目中需要通过浏览器进行telnet远程交互,但HTTP的无状态特性带来了挑战。由于不支持WebSocket和旧版Tomcat的限制,选择了使用轮询(polling)技术。实现过程中遇到的难题包括:‘More’提示导致的分页问题,通过发送空格解决;字符乱码,发现是ASCII码27导致,过滤掉即可;Socket连接的阻塞问题,通过增加结束判断避免;多线程管理,使用单例Map管理telnet连接,设置超时断开机制。
摘要由CSDN通过智能技术生成

       项目中最近要搞个telnet远程登陆,需要浏览器进行实时交互。我们都知道,浏览器的http协议是无状态的,一次请求,三次握手,状态肯定是保证不了的,那到底该怎么办呢?

       现在比较前卫的技术,例如websocket可以做到这一点,但是websocket是基于HTML5开发的,IE9以下版本不能支持,而且需要在tomcat7.0.47以上版本运行,而LZ项目组使用的是1.6版本,因此最终被LZ排除在外。那最笨的也是最有效的就是轮循(polling)了,就是定时刷新,采用ajax局部请求和刷新相关html页面。

       贴个完成的页面给大伙瞅瞅,html样式,是个弹出框。。。

 

       java连接telnet的代码还是比较简单的,commons-net-2.0.jar是工程依赖包,文字后贴上代码。当然,调试过程中,遇到了很多莫名其妙的问题。

       1、首先遇到的困难是,输入命令后出现了---- More ----,噩梦啊,一页居然显示不完,LZ试着发送'\r\n'模拟回车,一行一行的读取,后来,LZ发现发送空格可以一次翻一页,原谅我linux小白。。。总算解决了问题。

       2、接着就出现了一断乱码字符'x[42D'(x打不出来),百思不得其解,一个一个字符打印出来,居然是char=27,脱离操作,长见识了,出现more以后输入命令后换行,开头都会多这么一个鸟东西,而且是跟着52个无用字符,那么,过滤掉,ok。

       3、然后就是时不时的假死,特别郁闷,打开JDK文档,里面是这么写的,InputStream。

public abstract int read()throws
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值