使用telnetd java类库制作守护线程
关键字: telnet java telnetdtelnetdV2.0是一个纯java的telnet类库,可以作为一个telnet守护线程嵌入到自己的程序里面,可是我从http://telnetd.sourceforge.net
下载了一个包以后发现里面没有任何的文档,没办法,只能啃代码了,好在它还有一个例子程序(在/telnetd/src/net/wimpi/telnetd/TelnetD.java里面) ,main函数也超简单,其作用的是以下这个部分:
} else {
myTD = TelnetD.createTelnetD(args[0]);
}
//2.start serving/accepting connections
myTD.start();
args[0]里面存的是一个叫telnetd.properties的配置文件的url,如果你用的是本地文件,可以这样写:
file:///F:/telnetd/telnetd.properties (这个配置文件,包里面也有现成的) 。
可能你会问我怎么获得telnet客户端输入的数据和命令呢? 别急,接下来我就告诉你怎么一回事,打开telnetd.properties 前面的东西都不用管,你要设置的是
##################
# Shells Section #
##################
# List of shells available and defined below
shells=dummy,deamon
# shell implementations
shell.dummy.class=net.wimpi.telnetd.shell.DummyShell
shell.deamon.class=mypackage.DeamonShell
和
#####################
# Listeners Section #
#####################
两部分,实际上telnetd使用了反射工厂模式 ,当有客户端连上一个listener的时候,实例化一个对应的shell实例 ,这个实例继承了net.wimpi.telnetd.shell.Shell(具体看net.wimpi.telnetd.shell.DummyShell) ,你所要做的就是模仿DummyShell继承net.wimpi.telnetd.shell.Shell创建自己的shell类来处理客户端的请求。
而listener section就是设置服务器端serversocket监听器的配置了,比如端口,telnetd支持多个端口的telnet监听,而实现这个的配置就是:
listeners=std
# std listener specific properties
#Basic listener and connection management settings
std.port=6666
std.floodprotection=5
std.maxcon=25
# Timeout Settings for connections (ms)
std.time_to_warning=3600000
std.time_to_timedout=60000
# Housekeeping thread active every 1 secs
std.housekeepinginterval=1000
std.inputmode=character
# Login shell
std.loginshell=dummy
# Connection filter class
std.connectionfilter=none
如果你要同时监听两个端口,6666和7777那么你只需要这么写:
listeners= std,myListener
std配置如上...
myListener.port=7777
以下与std类似...
# Login shell
myListener.loginshell=deamon
...
现在明白了吗,要注意# Login shell这个配置,std.loginshell=dummy 而myListener.loginshell=deamon 的意思就是说:
如果你使用telnet客户端,连接6666端口的话,net.wimpi.telnetd.shell.DummyShell会为你服务,而如果你使用7777端口的话,mypackage.DeamonShell会来招呼你。
好了,我就研究到这里,反正用它足够开关我的多线程程序了,如果你还有什么不明白的,或者想要了解更多,建议可以看它的原代码。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 12149 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
POI拷贝Sheet包括每个单 ...
你好,你写的这个方法正式我说需要的,不过我有2个问题:1、该方法能实现两个不同的 ...
-- by jackini -
自己写OpenCms自定义结构 ...
老兄,这是按页面关键字进行搜索,你知道怎么按网页创建的时间进行搜索吗.急啊!!! ...
-- by zhouxiao315 -
opencms7.0.x plugin for ...
太好了,有更新了
-- by cai555 -
opencms7.0.x plugin for ...
我的环境:Myeclipse6.0(eclipse3.3.1)/openCMS7 ...
-- by foolpcman -
谁能告诉我为什么parseInt ...
居然被评为入门帖,不过还是感谢解答的各位
-- by cai555






评论排行榜