`

使用telnetd java类库制作守护线程

阅读更多

telnetdV2.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=dummymyListener.loginshell=deamon 的意思就是说:

如果你使用telnet客户端,连接6666端口的话,net.wimpi.telnetd.shell.DummyShell会为你服务,而如果你使用7777端口的话,mypackage.DeamonShell会来招呼你。

好了,我就研究到这里,反正用它足够开关我的多线程程序了,如果你还有什么不明白的,或者想要了解更多,建议可以看它的原代码。

分享到:
评论

相关推荐

    Telnet的java实现

    本文将详细介绍如何使用Java语言实现Telnet协议的远程服务器连接。 #### 二、Telnet协议概述 Telnet协议是一种基于客户端/服务器模型的应用层协议,主要功能是为用户提供一种登录远程主机的方式,并能在不同的操作...

    使用java实现telnet-client工具分享

    在Java编程环境中,实现telnet-client工具主要是为了进行远程终端通信。Telnet协议是一种网络协议,允许用户通过网络连接到远程主机并执行命令,类似于SSH(Secure Shell)但不提供加密和安全性的保障。Apache ...

    简易的telnet操作java.rar_Telnet-JAVA_java telnet_telnet_telnet in jav

    在“简易的telnet操作java.txt”中,可能包含了一个使用`TelnetClient`的基本示例代码。通常,这样的代码会涉及以下步骤: 1. **导入必要的库**:导入`jcpt.telnet.TelnetClient`和其他相关类。 2. **创建`Telnet...

    telnetd_java-1.0.zip_java telnet_java telnet server_java telnetd

    在本文中,我们将深入探讨Java TelnetD库(可嵌入式telnet守护进程)的核心概念、功能以及如何使用。 首先,telnetd是一个守护进程,通常在操作系统后台运行,提供一个标准的TCP/IP端口供telnet客户端连接。Java ...

    Java语言实现Telnet客户端程序(有界面)

    在 Java 中实现 Telnet 客户端,主要涉及到 Java 的 Socket 编程和多线程技术。 1. **Socket 编程**:Java 提供了 `java.net.Socket` 类来实现 TCP 连接,它是建立 Telnet 连接的基础。Socket 包含了输入流和输出流...

    Java Telnet客户端实例源码

    Java Telnet客户端是一种基于TCP协议的应用程序,它允许用户通过Java编程语言与远程服务器上的Telnet服务进行交互。在Java中实现一个Telnet客户端可以帮助开发者远程控制或测试其他支持Telnet的服务,例如网络设备...

    java gui 实现 telnet 登录交换机

    Java GUI实现Telnet登录交换机是一项常见的网络管理任务,它涉及到Java编程、图形用户界面(GUI)设计以及网络通信协议的使用。在这个过程中,开发者通常会利用Java的Swing库来构建GUI,Jsch库来处理Telnet通信,...

    socket做的支持多线程断点上传or断点续传Java源码

    标题中的“socket做的支持多线程断点上传or断点续传Java源码”涉及到的是在网络编程中,如何使用Java的Socket API实现一个能够处理断点上传和断点续传功能的服务。这是一个高级的网络编程任务,通常在大型文件传输...

    telnetd-2_0.zip_java 2 telnet_java telnet server_java 实现Telnet服务

    本篇将详细讲解如何使用Java实现一个Telnet服务器。 标题“telnetd-2_0.zip_java 2 telnet_java telnet server_java 实现Telnet服务”表明我们将讨论的是一个基于Java编写的 Telnet服务器程序,版本为2.0。这个...

    telnet.rar telnet 协议 客户端 源代码 java

    在Java中,我们可以使用java.net.Socket类来实现telnet客户端的基本功能。以下是一些关键步骤: 1. 创建Socket对象,指定服务器的IP地址和telnet服务端口号(通常为23)。 2. 通过Socket对象的getOutputStream()获取...

    java通过telnet方式连接服务器

    java源代码,通过telnet方式连接服务器,可以设置是否记录日志等信息。经过稍微改动可以实现类似crt软件的功能。

    java实现模拟SSH和telnet登陆(实现命令的发送和接受)

    Java 实现模拟 SSH 和 Telnet 登陆,以及发送与接收命令是网络编程中常见的需求,主要应用于自动化测试、远程系统管理或数据交换等场景。在本文中,我们将深入探讨如何利用 Java 实现这一功能。 首先,SSH(Secure ...

    java_6_source.rar_LOTUS_telnet java_简单计算器java

    首先,"LOTUS_telnet java"这部分涉及到的是使用Java与Lotus Domino服务器进行通信。Lotus Domino是IBM的一款协同软件平台,它提供了电子邮件、日历、任务管理等功能。在Java中,通过使用Lotus Notes Java API,...

    apache_net.zip_apache teln_apache telnet_java telnet_java telnet

    在描述中提到的"java的telnet example"可能是指包含的一些示例代码,这些代码演示了如何使用Apache Net库来创建telnet客户端或服务器。 TFTP(Trivial File Transfer Protocol)协议则是一个简单文件传输协议,常...

    JavaTelnet.java

    通过命令的形式,实现类似java调用cmd命令一样获取到对应的数据并返回值

    Java开发Client客户端,连接Windows的Telnet服务器,解决了中文乱码问题

    在Java开发过程中,有时我们需要创建一个Client客户端来与远程服务器进行通信,比如通过Telnet协议。Windows系统内置了Telnet服务器,允许用户通过命令行进行远程登录和交互。本文将详细探讨如何使用Java开发这样的...

    java 实现telnet服务器执行脚本

    以下是从给定文件中提取的关于如何使用Java实现Telnet服务器执行脚本的重要知识点。 #### 1. 导入必要包 首先,为了与Telnet服务器进行交互,我们需要导入`java.io.InputStream`和`java.io.PrintStream`用于处理...

    java commons-net 类库

    这个类库自V3.3版本起,已经成为许多Java开发者处理网络通信问题的首选库,因为它简化了TCP/IP、FTP、SMTP等多种网络协议的实现。 Commons-Net的核心特性包括: 1. **FTP客户端**:提供了全面的FTP客户端支持,...

    Telnet的java版客户端程序及架包

    5. **线程安全与并发处理**:如果Java Telnet客户端设计良好,它应该考虑多线程环境下的安全问题,确保在并发访问时不会出现数据混乱。 6. **API设计**:一个优秀的Java Telnet客户端库应提供清晰、易用的API,例如...

Global site tag (gtag.js) - Google Analytics