`

Java中TelnetClient使用实例

 
阅读更多
花了几天时间赶了个软件,功能是Telnet登录到一台Linux主机上,然后执行命令,将返回的信息解析后插入到Oracle数据库中(多线程登录,数据库连接池处理连接并发)。总的来说功能比较简单,但是对Oracle数据库使用完全是0,还是让人纠结,所以记录下来。
首先说Java下Telnet的实现。先提Apache基金会(http://projects.apache.org/index.html),下面的提供的开源软件非常多,进入Categories可以领略下。我这里用到了Commons Net(http://commons.apache.org/net/download_net.cgi),下载Jar包(我用的是commons-net-2.0.jar),这个应该不影响,网站里面提供了相关类或者例子可以查看。我贴出这个Commons Net 3.1包中的API看看,说不定以后需要呢:
org.apache.commons.net Common socket classes and protocol command utility classes
org.apache.commons.net.bsd Classes for rcommand, rexec, rlogin
org.apache.commons.net.chargen Chargen over TCP and UDP
org.apache.commons.net.daytime Daytime over TCP and UDP
org.apache.commons.net.discard Discard over TCP and UDP
org.apache.commons.net.echo Echo over TCP and UDP
org.apache.commons.net.finger Finger implementation
org.apache.commons.net.ftp FTP and FTPS support classes
org.apache.commons.net.ftp.parser FTP file listing parser classes
org.apache.commons.net.imap Basic IMAP and IMAPS support classes
org.apache.commons.net.io Utility classes for IO support.
org.apache.commons.net.nntp NNTP - network news transfer protocol
org.apache.commons.net.ntp NTP - network time protocol
org.apache.commons.net.pop3 POP3 and POP3S mail
org.apache.commons.net.smtp SMTP and SMTPS mail
org.apache.commons.net.telnet Telnet implementation
org.apache.commons.net.tftp TFTP cliemt implementation
org.apache.commons.net.time Time protocol (RFC 868) over TCP and UDP
org.apache.commons.net.util Utility classes
org.apache.commons.net.whois Whois client
当然,我这里用的是里面的telnet。非常幸运的找到了参考1(TelnetClient远程访问unix系统),写得很好,代码直接可以拿来用,因此使用的例子直接就可以使用。我提一下过程,首先也是主要的TelnetClient,继承自org.apache.commons.net.SocketClient,调用connect(ip,端口)建立TCP连接,然后通过 getInputStream() 和 getOutputStream() 获得输入输出流,就可以进行通信了,在具体的命令之前,需要login用户名和输入password,登录成功后得到系统的接收输入标志($或其它),在完成相关命令后执行disconnect关闭连接。实现非常简单,接下来看看数据库。
这里安装的是Oracle 10g,在Windows XP上,在Win 7上装的时候老是提示ORA-12546: TNS: 权限被拒绝的错误,没时间解决,可以换成11g。数据库的安装没有特别的,选个高级安装,默认来就差不多了。只是用的时候自己犯傻了,非要找个图形界面(MSSQL带来的弊病啊),其实下个PL/SQL或者Navicat(忘了说了可以直接通过Web访问的,确实非常方便。)。原来用Navicat MySQL,想想试试Navicat Oracle,配置也很简单参考2(如果是远端访问,就需要自己下载访问客户端),如果在数据库所在机子上使用直接在工具中查找OCI动态库(在安装目录下)就可以。但是它的使用让我彻底傻了,知道Oracle是不区分大小写的,但是件了test1,test2在Navicat上都能正常显示,可是使用其自动登录的sqlplus就是看不到,但是查询HELP等自带的表一个不少。。。,后来干脆都删除,直接在sqlplus建立,显示查询都正常,发现在Navicat中的表名都是大写。再用大写建表尝试,结果正常显示。。。这个。。。,好了,不多说了,那么通过JDBC连接Oracle示例非常多了,Class.forName ( "oracle.jdbc.driver.OracleDriver" );注册下,DriverManager.getConnection ( oracle,m_User,m_pwd );获得连接,后面通过这个连接connection.createStatement,配合Statement ResultSet 等执行相关的语句即可,至于连接池,简单说就是预先建立一部分连接,需要时将连接分配出去,用完后只是标记下其使用状态(相当于又放回池中),如此循环往复。顺便提一下的是数据库自带的timestamp类型,对应写sql语句时为sysdate,可以直接变为当前时间。最后还要提醒下,执行的sql语句不要有分号哦,否则老是会提示ORA-00911: 无效字符 (这个一出来,肯定是语句有问题了,不要怀疑别人啊!!!)
落下的总要补上的,原来看Java编程思想,想的正则表达式后面再看,结果这次就用到了,其中的解析就是,同时使用了LinkedHashMap,来保存键值对及插入的顺序。继续。。。


参考
1.TelnetClient远程访问unix系统 http://liyan4770.iteye.com/blog/739113
2.Navicat 9如何连接ORACLE10G数据库 http://www.cnblogs.com/vic_lu/archive/2010/08/28/1810704.html
分享到:
评论

相关推荐

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

    在这个例子中,使用了`org.apache.commons.net.telnet.TelnetClient`类来创建telnet客户端实例。`TelnetClient`是Apache Commons Net提供的核心类,它负责建立和管理telnet会话。 在`TelnetUtil`类中,定义了一些...

    Java Telnet客户端实例源码

    通过阅读和理解提供的"Java Telnet客户端实例源码",你可以深入了解如何在实际项目中运用这些概念和技巧。`README.md`文件应该包含了关于如何使用这个源码的详细说明和任何特殊功能的介绍。请务必仔细阅读,以便更好...

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

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

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

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

    TelnetClient.rar

    - `TelnetClient.java`: 这可能是项目的主类,负责创建`Telnet`连接,发送命令并接收服务器响应。它可能会包含`connect()`、`sendCommand()`和`receiveResponse()`等方法,这些都是实现`Telnet`客户端功能的关键。 ...

    java 实现telnet服务器执行脚本

    首先,为了与Telnet服务器进行交互,我们需要导入`java.io.InputStream`和`java.io.PrintStream`用于处理输入和输出流,以及`org.apache.commons.net.telnet.TelnetClient`类,这是Apache Commons Net库中的一个类,...

    Telnet-Server-Client.rar_Telnet Server Java_java socket telnet_

    这个`rar`文件中的`Telnet Server-Client`项目,对于学习`Java`网络编程、`Socket`通信以及`Telnet`协议的实现非常有用。你可以通过阅读源代码,理解服务器和客户端如何建立和维护连接,如何处理输入输出流,以及...

    基于java的Telnet客户端实例源码.zip

    这些代码可能包括一个名为`TelnetClient`的类,它封装了建立连接、发送命令、读取响应以及关闭连接的方法。开发者可以通过阅读和分析这个源代码来学习如何在实际项目中实现一个Java Telnet客户端。 总之,基于Java...

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

    在这个例子中,服务器启动后会监听23端口,当客户端连接时,创建一个新的线程来处理每个连接,以确保服务器能同时处理多个客户端请求。`ClientHandler`类负责读取客户端发送的命令,并向客户端返回响应。`process...

    java源码:Java Telnet客户端实例源码.zip

    Java的`java.net.TelnetClient`类提供了一些预定义的方法来处理这些命令,但在这个实例源码中,可能使用了自定义的实现。 6. **异常处理**:在进行网络通信时,可能会遇到各种异常,如连接失败、超时、数据传输错误...

    apache_net.zip_apache teln_apache telnet_java telnet_java telnet

    使用Apache Net库进行telnet操作时,开发者通常会先创建一个`TelnetClient`实例,然后连接到目标服务器。连接成功后,可以使用`sendCommand`方法发送telnet命令,或者通过输入流和输出流进行数据交换。对于tftp,会...

    java源码包---java 源码 大量 实例

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    telnet下载commont net下载

    在具体的使用过程中,对于Telnet功能,开发者可以通过`org.apache.commons.net.telnet.TelnetClient`类来创建一个客户端实例,然后连接到远程服务器。该类提供了设置终端类型、发送数据、读取响应等方法。例如: ``...

    java memcache使用例子

    本篇文章将围绕"Java Memcache使用例子"这一主题,详细介绍如何在Java中使用Memcached。 首先,确保您已经在本地正确安装了Memcached。通常,Memcached可以在Linux、macOS和Windows等操作系统上运行。你可以通过...

    Java 在Client-Server 网络中的应用

    ### Java在Client-Server网络中的应用详解 #### 一、Java网络应用模型 随着Java语言的广泛应用及其与互联网的高度融合,Java已经成为构建现代信息系统的重要工具之一。Java的特点,如跨平台性、面向对象的设计理念...

    Android-Telnet-Client:一个简单的 telnet 客户端,适用于我的 android

    在IT行业中,Android-Telnet-Client项目是一个专门为Android设备设计的简单telnet客户端,它允许用户通过Android设备连接到远程服务器,进行命令行交互。这个客户端尤其适用于那些需要远程控制或诊断网络设备,如...

    JAVA上百实例源码以及开源项目源代码 java开源包2

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目源代码

    Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...

    commons-net-2.0.jar.zip

    1. **创建实例**:首先,你需要创建一个`TelnetClient`对象,这标志着一个新会话的开始。 ```java import org.apache.commons.net.telnet.TelnetClient; ... TelnetClient telnet = new TelnetClient(); ``` 2. **...

Global site tag (gtag.js) - Google Analytics