用了apache.commons.net.telnet包来实现telnet远程服务器某个端口是否开通从而来判断远程服务器是否能连通。
结果出现以下问题:
在
公司内网中并且是在tomcat中 ,即便远程服务器(远程服务器在公司外网)停止, 但是telnet.isConnected()返回仍然是ture,(我看了下apache.commons.net.telnet包代码,其实底层也是用socket来实现,我也直接用java 的Socket检测,直接抛开apache.commons.net.telnet包,但是Socket仍然能连接。),直到tomcat重启后,我再测才会报端口不通了。
另外,如果我单独把代码拿带main()中运行,不用tomcat,也是正常的。
还有一种情况,如果要检查的远程服务器是在公司内网,那么当我把这台服务器关闭,即便不重启tomcat,也会报不能连通。就是说是正常的。所以这个应该可以排除tomcat自己的缓存问题。
在家测,就是在
公司外网测,就是完全正常,tomcat也不用重启。
现在我初步断定应该是tomcat和公司内部的外网出口可能会有什么缓存之类的,一旦tomcat和公司的外网出口建立连接就会有缓存在哪里。请教各为高手能不能给点意见,或者怎么样才能把tomcat和公司外网出口的缓存断掉?谢谢了。
上段代码:
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.telnet.*;
import org.apache.log4j.Logger;
/**
*
* @author Administrator
*
*/
public class NetTelnetUtil {
public static boolean checkServerAvaliable(String serverIp, String port,
int timeout) {
boolean isConnect = false;
TelnetClient telnet = new TelnetClient();
try {
telnet.setConnectTimeout(timeout);
telnet.connect(serverIp, Integer.valueOf(port));
if (telnet != null) {
isConnect = telnet.isConnected();
}
} catch (SocketException ioe) {
System.out.println(ioe);
} catch (IOException se) {
System.out.println(se);
}finally {
disconnect(telnet);
}
if (isConnect) {
System.out.println("Port: " + port + " is availabled to telnet.");
}
return isConnect;
}
public static void disconnect(TelnetClient telnet) {
try {
System.out.println("telnet disconnect.");
telnet.disconnect();
} catch (IOException e) {
System.out.println(e);
}
}
}
分享到:
相关推荐
java-telnet连接远程服务器并执行shell命令 具体代码 java-telnet
java源代码,通过telnet方式连接服务器,可以设置是否记录日志等信息。经过稍微改动可以实现类似crt软件的功能。
c# telnet远程服务器 发送指令。可以远程linux、Windows发送 dos命令
利用telnet协议的远程登录端 很全的文档 绝对有用
SecureCRT-v6.58H telnet远程服务器调试工具 服务器开发
远程连接服务器的两种方式,telnet和ssh两种,还提供了执行命令的接口
在VBS中,使用Telnet连接远程端口,测试远程端口是否开放。不依赖Active库。
使用Telnet方式远程登录交换机.pdf
FinalShell是一款功能强大的远程终端软件,它可以让用户通过SSH、Telnet或者RDP等协议连接到远程服务器或设备,实现远程控制和管理。FinalShell支持多标签页、会话管理、命令自动补全、命令批量执行等功能,用户可以...
实现远程控制的具体步骤,包括远程桌面连接和远程桌面连接控制的详细步骤。
telnet命令测试SMTP服务器
用下列命令编译程序: gcc -Wall telnet-server -o telnetd 启动telnet服务: ./telnetd --daemon #以root用户身份在23端口(即telnet默认端口服务) 或 ./telnetd -P 7838 #以非root用户身份
在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话...
主要介绍了Windows下bat批处理脚本使用telnet批量检测远程端口小记,需要的朋友可以参考下
linux下telnet远程管理程序,包括客户端和服务端程序,客户端发送命令,服务端执行返回结果给客户端。
DOS批处理下操作telnet实现自动远程登录操作
远程开启telnet服务的脚本,远程开启telnet服务的脚本
很多人在问怎么远程启动TELNET,同时,按照很多人使用小榕的流光工具,需要上传NTLM.exe,启动NTLM.exe来修改微软Telnet的NTLM认证方式,或者上传一个NCX,开99端口,这些程序的启动还需要使用AT,查询服务器的时间...
Java开发Client客户端,连接Windows的Telnet服务器,解决了中文乱码问题。 分数太高了,不是我设置的,也改不了了,大家不要下了。
Telnet服务器代码