`
liukai
  • 浏览: 706306 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

commons-net 的用法.

    博客分类:
  • java
 
阅读更多
注意要点:参考官方的demo,而不要采用大多数网上的demo,访问交换机会在登录那块堵塞.所以要实现Runnable,如果要显示反馈的话实现TelnetNotificationHandler 接口.

package com.sobey.telnet.service;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;

import org.apache.commons.net.telnet.EchoOptionHandler;
import org.apache.commons.net.telnet.SuppressGAOptionHandler;
import org.apache.commons.net.telnet.TelnetClient;
import org.apache.commons.net.telnet.TelnetNotificationHandler;
import org.apache.commons.net.telnet.TerminalTypeOptionHandler;
import org.springframework.stereotype.Service;

@Service
public class TelnetService implements Runnable, TelnetNotificationHandler {

	public TelnetService() {
		super();
	}

	private static TelnetClient tc = null;
	private InputStream in;
	private PrintStream out;

	@Override
	public void receivedNegotiation(int negotiation_code, int option_code) {
		String command = null;
		if (negotiation_code == TelnetNotificationHandler.RECEIVED_DO) {
			command = "DO";
		} else if (negotiation_code == TelnetNotificationHandler.RECEIVED_DONT) {
			command = "DONT";
		} else if (negotiation_code == TelnetNotificationHandler.RECEIVED_WILL) {
			command = "WILL";
		} else if (negotiation_code == TelnetNotificationHandler.RECEIVED_WONT) {
			command = "WONT";
		}
		System.out.println("Received " + command + " for option code " + option_code);
	}

	public void execCommand(String ip, String username, String password, String command) {
		Thread t = new Thread(new TelnetService(ip, 23, username, password, command));
		t.start();
	}

	@Override
	public void run() {
		InputStream instr = tc.getInputStream();
		try {
			byte[] buff = new byte[1024];
			int ret_read = 0;
			do {
				ret_read = instr.read(buff);
				if (ret_read > 0) {
					System.out.print(new String(buff, 0, ret_read));
				}
			} while (ret_read >= 0);
		} catch (Exception e) {
			System.err.println("Exception while reading socket:" + e.getMessage());
		}
		try {
			tc.disconnect();
		} catch (Exception e) {
			System.err.println("Exception while closing telnet:" + e.getMessage());
		}
	}

	public TelnetService(String ip, int port, String username, String password, String command) {
		if (intconnect(ip, port)) {
			write(username);
			write(password);
			write(command);
		}
	}

	private void write(String command) {
		try {
			out.println(command);
			out.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private boolean intconnect(String ip, int port) {
		try {
			tc = new TelnetClient();
			TerminalTypeOptionHandler ttopt = new TerminalTypeOptionHandler("VT100", false, false, true, false);
			EchoOptionHandler echoopt = new EchoOptionHandler(true, false, true, false);
			SuppressGAOptionHandler gaopt = new SuppressGAOptionHandler(true, true, true, true);

			tc.addOptionHandler(ttopt);
			tc.addOptionHandler(echoopt);
			tc.addOptionHandler(gaopt);
			tc.connect(ip, port);
			in = tc.getInputStream();
			out = new PrintStream(tc.getOutputStream());
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			try {
				tc.disconnect();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			return false;
		}
	}

}
分享到:
评论

相关推荐

    commons-dbcp-1.2.1.jar + commons-pool-1.4.jar + commons-collections-3.2.jar

    在Java开发中,数据库连接管理是一项关键任务,而Apache Commons DBCP(Database Connection Pool)是广泛使用的数据库连接池实现之一。本主题将详细解析标题和描述中提及的三个核心库:`commons-dbcp-1.2.1.jar`、`...

    spring-data-commons-2.3.9.RELEASE-API文档-中文版.zip

    赠送jar包:spring-data-commons-2.3.9.RELEASE....使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    spring-data-commons-2.0.6.RELEASE-API文档-中文版.zip

    赠送jar包:spring-data-commons-2.0.6.RELEASE....使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    commons-net-3.1-API文档-中文版.zip

    赠送jar包:commons-net-3.1.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    commons-beanutils.jar commons-collections-3.1.jar commons-pool-1.2.jar

    例如,`commons-beanutils.jar`可以帮助开发者方便地处理对象属性,`commons-collections-3.1.jar`提供了丰富的集合操作,而`commons-pool-1.2.jar`则有助于优化对象的创建和使用,减少系统资源的消耗。在实际项目中...

    commons-net-3.3-API文档-中文版.zip

    赠送jar包:commons-net-3.3.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    commons-fileupload-1.3.3.jar和commons-io-2.6.jar

    4. **使用 Commons IO**:在保存文件时,`Commons IO`库提供了方便的方法,如`Files.copy()`,可以用来将上传的文件流安全地写入目标文件。 5. **异常处理**:在处理过程中,要捕获并适当地处理可能出现的异常,如...

    commons-net-3.6-API文档-中英对照版.zip

    使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    commons-fileupload-1.3.3.jar commons-io-2.5.jar

    `commons-fileupload-1.3.3.jar` 和 `commons-io-2.5.jar` 是Apache Commons项目中的两个重要库,它们提供了强大的文件上传功能,使得开发者可以轻松地处理用户通过表单提交的文件。 Apache Commons FileUpload是...

    spring-data-commons-2.0.9.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-data-commons-2.0.9....使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对

    ws-commons-util-1.0.2.zip_ws-comm-util.jar

    这意味着,当开发或运行与XenServer相关的应用程序时,你需要这个特定的ws-commons-util库,它可能包含了处理特定任务或提供特定功能的类和方法。 【标签】"ws-comm-util.jar" 是对压缩包内主要组件的简写,这可能...

    commons-dbcp-1.4.jar和commons-pool-1.5.6.jar

    Apache Commons DBCP(Database Connection Pool)和Apache Commons Pool是两个在Java开发中广泛使用的开源库,主要用于数据库连接管理和对象池服务。这两个JAR文件,`commons-dbcp-1.4.jar` 和 `commons-pool-1.5.6...

    commons-codec.jar;commons-logging-1.1.jar;commons-httpclient-3.1.jar

    通过使用Commons Logging,开发者可以轻松地在运行时切换日志实现,或者在不支持特定日志系统的环境中选择合适的替代方案。这对于大型项目和跨团队协作尤其有用,因为它提供了日志实现的灵活性和一致性。 3. **...

    commons-net-3.8.0-API文档-中文版.zip

    赠送jar包:commons-net-3.8.0.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    commons-fileupload-1.3.jar和commons-io-1.2.jar.zip

    在Java Web开发中,文件上传是一项常见的功能,用于允许用户上传图片、文档等文件到服务器。Apache Commons FileUpload和Commons IO...通过理解这两个库的工作原理和使用方法,可以提高开发效率并提升应用程序的质量。

    commons-logging-1.1.1.jar,commons-httpclient-3.1.jar,commons-codec-1.4.jar

    3. **编码数据**:使用Commons Codec库对请求体中的敏感信息进行编码,如将手机号码进行URL编码。 4. **发送请求**:通过HttpClient的execute方法发送请求,并获取响应。 5. **处理响应**:解析HTTP响应,检查状态码...

    commons-fileupload-1.2.2.jar和commons-io-2.4.jar包

    在处理文件上传和下载的过程中,IO库提供了许多实用工具类和方法,如文件的创建、删除、复制、重命名,以及读写文件内容等。在与FileUpload库配合使用时,IO库可以方便地进行文件的读写和临时存储,确保文件上传过程...

    commons-beanutils-1.9.1.jar<---&gt;commons-logging-1.1.3.jar

    例如,当使用BeanUtils进行属性赋值时,如果出现异常(如找不到对应的setter方法),可以通过commons-logging记录这些错误信息,便于调试和问题排查。 `commons-beanutils-1.9.1.jar`与`commons-logging-1.1.3.jar`...

    commons-fileupload-1.4-API文档-中文版.zip

    赠送jar包:commons-fileupload-1.4.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

    commons-collections-3.2.2-API文档-中文版.zip

    赠送jar包:commons-collections-3.2.2.jar;...使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。

Global site tag (gtag.js) - Google Analytics