import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;
/**
* Telnet客户端,可以登陆到Telnet服务器,灵感来源与JDK宝典
*/
public class TelnetClientCTM
{
// 默认的Telnet服务器名
public static final String DEFAULT_HOST = "127.0.0.1";
// 默认的Telnet服务器端口
public static final int DEFAULT_PORT = 23;
// 主机名(或者IP)和端口号
private String host;
private int port;
// 连接主机的socket
org.apache.commons.net.telnet.TelnetClient socket = null;
// 发送数据和接收数据的管道,Pipe为自定义类
PipeIn sendPipe = null;
PipeIn receivePipe = null;
// 默认构造方法
public TelnetClientCTM()
{
this.host = DEFAULT_HOST;
this.port = DEFAULT_PORT;
}
public TelnetClientCTM(String host, int port)
{
this.host = host;
this.port = port;
}
/**
* 登陆到服务器
*/
public void telnet()
{
try
{
socket = new TelnetClient();
socket.connect(host, port);
// 将socket的输入端数据(来自服务器端)流向本地标准输出,即接收数据
receivePipe = new PipeIn(socket.getInputStream(), System.out);
receivePipe.start();
// 将本地的标准输入数据流向socket的输出端,即流向服务器端,发送数据
sendPipe = new PipeIn(System.in, socket.getOutputStream());
sendPipe.start();
}
catch (IOException e)
{
System.out.println("连接失败:" + e);
return;
}
}
/**
* 断开连接
*/
public void disconnect()
{
if (socket != null)
{
try
{
socket.disconnect();
System.out.println("成功断开连接");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
public static void main(String[] argv)
{
new TelnetClientCTM().telnet();
}
}
/**
* 管道类,将输入流的数据写入到输出流中。 是一个线程,可以独立运行
*/
class PipeIn extends Thread
{
// 管道的输入流和输出流
InputStream is;
PrintStream os;
/**
* 构造方法,构造输入输出流
*
* @param is
* @param os
*/
PipeIn(InputStream is, OutputStream os)
{
this.is = is;
// this.is = new BufferedReader(new InputStreamReader(is));
this.os = new PrintStream(os);
}
/**
* 线程体方法,将输入流的数据写入到输出流 可以在这里做对输入的命令做处理,
* 譬如输入的“exit“指令,并且给指令的输出结果是”logout“
* 的话可以退出客户端,调用disconnect()方法和System.exit方法
*/
public void run()
{
int line = 0;
try
{
while ((line = is.read()) != -1)
{
os.print((char) line);
os.flush();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
但这个程序存在一个很严重的问题,就是从服务短读取的数据显示的时候会有问题,会有不知道是什么乱七八糟的字符显示,但有不是乱码,如下:
[01;34mlib[00m [00;32mreadme.html[00m [01;34mserver[00m
请知道得大虾们赐教,多谢了。
分享到:
相关推荐
赠送jar包:commons-net-3.8.0.jar; 赠送原API文档:commons-net-3.8.0-javadoc.jar; 赠送源代码:commons-net-3.8.0-sources.jar; 赠送Maven依赖信息文件:commons-net-3.8.0.pom; 包含翻译后的API文档:...
赠送jar包:commons-net-3.1.jar; 赠送原API文档:commons-net-3.1-javadoc.jar; 赠送源代码:commons-net-3.1-sources.jar; 包含翻译后的API文档:commons-net-3.1-javadoc-API文档-中文(简体)版.zip 对应...
赠送jar包:commons-net-3.6.jar; 赠送原API文档:commons-net-3.6-javadoc.jar; 赠送源代码:commons-net-3.6-sources.jar; 赠送Maven依赖信息文件:commons-net-3.6.pom; 包含翻译后的API文档:commons-...
赠送jar包:commons-net-3.3.jar; 赠送原API文档:commons-net-3.3-javadoc.jar; 赠送源代码:commons-net-3.3-sources.jar; 赠送Maven依赖信息文件:commons-net-3.3.pom; 包含翻译后的API文档:commons-...
这个库在不同的版本中提供了各种功能的增强和优化,比如`commons-net-3.1.jar`, `commons-net-3.3.jar`, 和 `commons-net-3.6.jar`。下面将详细阐述这些版本中涉及的主要知识点: 1. **FTP(文件传输协议)支持**:...
Telnet协议在commons-net中也有很好的实现,包括TelnetClient类,用于建立和管理Telnet会话。开发者可以通过它与远程服务器进行交互,执行命令或获取服务器输出。 4. **NNTP支持** 新闻组协议NNTP(Network News ...
- **Telnet支持**:提供了一个强大的Telnet客户端,可用于连接和交互远程服务器。 - **NNTP支持**:用于新闻组通讯,允许读取、发布和检索新闻项。 - **SMTP支持**:发送电子邮件的简单接口,支持附件和认证。 - **...
TelnetClient包,TelnetClient类根据RFC 854为Telnet协议实现了简单网络虚拟终端(NVT)。它没有实现任何其他Telnet选项,因为它打算在Java程序中使用,以提供对Telnet可访问资源的自动访问。 可以通过首先使用Socket...
赠送jar包:commons-net-3.1.jar; 赠送原API文档:commons-net-3.1-javadoc.jar; 赠送源代码:commons-net-3.1-sources.jar; 包含翻译后的API文档:commons-net-3.1-javadoc-API文档-中文(简体)-英语-对照版....
给不能访问这个网站的或者不想麻烦的朋友方便下载,也就1资源分算是辛苦费吧,如果你能访问下面这个网址,你也可能自己去下载:https://mvnrepository.com/artifact/commons-net/commons-net
在使用`commons-net-3.6.jar`时,需要注意的是,由于它是一个较老的版本,可能存在已知的安全漏洞或性能优化问题。因此,对于新的项目,建议使用最新版本的Apache Commons Net库,以获得更好的稳定性和安全性。 ...
赠送jar包:commons-net-2.2.jar; 赠送原API文档:commons-net-2.2-javadoc.jar; 赠送源代码:commons-net-2.2-sources.jar; 赠送Maven依赖信息文件:commons-net-2.2.pom; 包含翻译后的API文档:commons-...
开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2...
赠送jar包:commons-net-3.8.0.jar; 赠送原API文档:commons-net-3.8.0-javadoc.jar; 赠送源代码:commons-net-3.8.0-sources.jar; 赠送Maven依赖信息文件:commons-net-3.8.0.pom; 包含翻译后的API文档:...
在本篇文章中,我们将深入探讨"commons-net-3.2.jar"这一版本的功能、特性以及如何在实际项目中应用。 一、概述 Apache Commons Net 3.2是该库的一个稳定版本,它提供了一系列接口和类,以支持各种网络协议的操作...
在这个版本中,我们聚焦于"commons-net-1.4.1.jar",这是一个专注于FTP(文件传输协议)功能的组件。该库为Java开发者提供了丰富的API,以便在他们的应用程序中轻松地集成FTP服务。 FTP是互联网上最古老的协议之一...
使用commons-net-1.4.1.jar,FTPClient连接成功了,但是ftpClient.listFiles(path).length=0 怎么办? 下载本工具,彻底解决问题。 不要增加类,也不要修改任何代码。 不要犹豫了,干掉commons-net-1.4.1.jar包,用这...
另外,还提供了`commons-net-3.2-sources.jar`,这是一个源代码文件,方便开发者查看和理解内部实现,这对于学习和调试非常有用。`commons-net-examples-3.2.jar`包含了使用示例,可以帮助初学者快速上手。最后,`...
在这个特定的案例中,我们关注的是`commons-net-ftp-2.0.jar.zip`这个压缩包,它包含了Apache Commons Net FTP库的2.0版本。这个库对于Java开发者来说,是进行FTP文件传输的重要工具。 FTP是一种用于在互联网上传输...