精华帖 (0) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-12
telnetdV2.0是一个纯java的telnet类库,可以作为一个telnet守护线程嵌入到自己的程序里面,可是我从http://telnetd.sourceforge.net 下载了一个包以后发现里面没有任何的文档,没办法,只能啃代码了,好在它还有一个例子程序(在/telnetd/src/net/wimpi/telnetd/TelnetD.java里面) ,main函数也超简单,其作用的是以下这个部分: } else { args[0]里面存的是一个叫telnetd.properties的配置文件的url,如果你用的是本地文件,可以这样写: file:///F:/telnetd/telnetd.properties (这个配置文件,包里面也有现成的) 。 可能你会问我怎么获得telnet客户端输入的数据和命令呢? 别急,接下来我就告诉你怎么一回事,打开telnetd.properties 前面的东西都不用管,你要设置的是 ################## # List of shells available and defined below shell.deamon.class=mypackage.DeamonShell 和 #####################
两部分,实际上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
如果你要同时监听两个端口,6666和7777那么你只需要这么写: listeners= std,myListener std配置如上... myListener.port=7777 以下与std类似... # Login shell
... 现在明白了吗,要注意# Login shell这个配置,std.loginshell=dummy 而myListener.loginshell=deamon 的意思就是说: 如果你使用telnet客户端,连接6666端口的话,net.wimpi.telnetd.shell.DummyShell会为你服务,而如果你使用7777端口的话,mypackage.DeamonShell会来招呼你。 好了,我就研究到这里,反正用它足够开关我的多线程程序了,如果你还有什么不明白的,或者想要了解更多,建议可以看它的原代码。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2635 次