`

用telnet的方式检验远程服务器的连通性,在tomcat中遇到问题

阅读更多
用了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连接远程服务器并执行shell命令 具体代码 java-telnet

    telnet输入乱码的解决

    在IT领域,网络调试是日常工作中常见的任务之一,而telnet作为一款远程终端协议工具,常用于测试TCP端口是否开放、验证服务器功能等。然而,有时候在使用telnet时可能会遇到输入乱码的问题,这会给工作带来困扰。...

    利用telnet协议的远程登录端 论文

    本文旨在探讨如何运用Visual C++(简称VC)实现基于Telnet协议的远程访问功能,通过详细解读Telnet协议的工作原理、客户端与服务器配置,以及核心代码实现,为读者提供全面的指导。 #### Telnet协议详解 Telnet...

    远程桌面连接和telnet远程桌面

    - 在功能列表中勾选“Telnet客户端”或“Telnet服务器”。 - 安装完成后,在“控制面板”->“系统和安全”->“管理工具”->“服务”中找到Telnet服务,并确保其处于启动状态。 - 在命令提示符中输入命令: ``` ...

    java 实现telnet服务器执行脚本

    在IT领域,远程访问和管理服务器是常见的需求,而Telnet协议提供了一种基于文本的网络通信方式,允许用户从远程客户端连接到服务器并执行命令。Java作为一种广泛应用的编程语言,提供了丰富的库来支持这种通信。以下...

    c# telnet远程服务器 发送指令

    c# telnet远程服务器 发送指令。可以远程linux、Windows发送 dos命令

    java通过telnet方式连接服务器

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

    SecureCRT-V6.58H win7能用 telnet远程服务器调试

    在本文中,我们将详细探讨如何在Windows 7操作系统上使用SecureCRT V6.58H版本进行telnet远程服务器调试,以提升开发效率。 一、SecureCRT简介 SecureCRT是一款支持SSH1、SSH2、telnet等多种协议的终端模拟器,具备...

    telnet服务器

    **标题:** "Win10系统安装与配置Telnet服务器" ...虽然Telnet因为安全性问题逐渐被SSH取代,但在某些场景下,它仍然是一个实用的远程控制和诊断工具。在使用过程中,务必注意安全措施,避免敏感信息泄露。

    telnet管理远程机器脚本

    在IT行业中,远程管理是日常运维工作中的重要环节,尤其对于多台服务器的集群环境而言。"telnet管理远程机器脚本"是一个高效且实用的方法,它允许我们通过编写脚本来自动化执行对远程服务器的管理和操作任务。在这个...

    telnet远程登录系统

    在本课设中,客户端可能是用C++或其他语言编写的一个小程序,用户需要输入自己的机器IP地址以及服务器的IP地址和端口,然后可以开始远程登录。 - **服务器端**:监听特定端口(通常是23)上的连接请求。当接收到...

    Telnet远程登陆实验报告

    尽管它在安全性方面存在诸多缺陷(例如,所有的通信都是明文传输,容易遭受中间人攻击),但在学习网络技术的过程中,Telnet协议仍然是一个重要的基础实验项目,特别是在配置网络设备如路由器和交换机时。...

    华三S5130配置web.Telnet,ssh远程访问实例

    然而,如果遇到“远程主机标识已更改”的错误,这通常是因为SSH主机密钥在客户端的known_hosts文件中不匹配。要解决这个问题,可以删除known_hosts文件中的旧条目,或者清空known_hosts文件,并重新连接。 在CRT等...

    Windows下bat批处理脚本使用telnet批量检测远程端口小记

    虽然Portqry能够实现端口检测,但作者在实际应用过程中遇到了问题,即使用该工具导致远程服务器系统崩溃。因此,Portqry并不是一个理想的解决方案。 #### 五、创新方法:基于窗口判断的telnet方案 在探索过程中,...

    telnet方式连接工具

    这种技术在早期网络中广泛应用,用于系统管理员远程管理服务器、测试网络服务等场景。虽然现代网络安全意识提高,telnet因其明文传输数据的特性而被认为不够安全,但其简单易用的特点仍使其在某些特定场合得到使用。...

    Telnet服务器

    通过 Telnet,用户可以在一个设备上输入命令,然后这些命令会在远程服务器上执行,就像用户直接在该服务器上操作一样。 2. **文件和目录操作**: Telnet 服务器允许用户远程执行如创建、删除、移动、复制文件和目录...

    putty代理设置,映射远程服务器端口至本地

    3. 在 Source Port 中输入要转换到本地的端口:在隧道设置界面中,我们需要在 Source Port 中输入要转换到本地的端口号,这样我们可以将远程服务器上的端口映射到本地机器上。 4. 在 Destination 中输入目的地址及...

Global site tag (gtag.js) - Google Analytics