java 定时检测服务器端口状态方法(一)


最近在写运维管理平台的定时检测集群中各台服务器端口开放状态来判断进程状态的定时任务。顺便整理了下java如何检测服务器一个或者多个端口,以及如何加到定时任务中。

一、java中用Socket检测服务器一个端口开放状态。(对socket不太了解,只是最近用才简单看了下)

Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。

Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。(百度百科)

个人实现思路是:将传递进来的ip先放到list的第一个位置,为了方便返回时ip和port对应。也可                     以用更好的方法,即用set来传递返回值,ip在调用check方法的对象中标记。

java.net 中 SocketAddress 的子类 InetSocketAddress 此类实现 IP 套接字地址(IP 地址 + 端口号)

/**

*

* @param ip

* @param port

* @return

*/

public List check(String ip,String port){

List<String> results=new ArrayList<String>();

results.add(0,ip);

try {

int intport=Integer.parseInt(port);

Socket socket=new Socket();

SocketAddress add = new InetSocketAddress(ip,intport);

socket.connect(add,50);

socket.close();

results.add(port);

return results;

} catch (Exception e) {

// TODO Auto-generated catch block

return null;

}

}

时间: 2024-10-06 04:07:34

java 定时检测服务器端口状态方法(一)的相关文章

java 定时检测服务器端口状态方法(二)

上一节写到检测单个端口,如何快速检测一个ip对应的多个端口.可以用多线程. public List check(String ip,String[] ports){ List<String> results=new ArrayList<String>(); results.add(0,ip); ExecutorService exec=Executors.newCachedThreadPool(); ArrayList<Future<String>> res

java 定时检测服务器端口状态方法(三)

将检测端口封装为一个任务 public class CheckPortsTask extends SuperSupervisory{ private static OmComponentInstanceProcess omComponentInstanceProcess; private List<Map<String,Object>> list=new ArrayList<Map<String,Object>>(); public boolean chec

java 定时检测服务器端口状态方法(四)

写定时任务管理器 public class TimedTaskManager { int TIME_FIVE_SECONDS=5; int TIME_TEN_SECONDS=10; int TIME_FIFITY_SECONDS=15; int delay_time_seconds=2; ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); ScheduledFuture<?> taskHandle_F

检测服务器端口是否被封(墙)

目录 #在国内测试服务器端口是否通 #在国外测试服务器端口是否通 #在国内外同时测试服务器端口是否通 #说明 #在国内测试服务器端口是否通 工具:http://tool.chinaz.com/port #在国外测试服务器端口是否通 工具:https://www.yougetsignal.com/tools/open-ports/ #在国内外同时测试服务器端口是否通 工具:http://port.ping.pe/ 从上图中可以看出该工具可以从世界各地测试某个服务器的端口是否通,示例中的端口除了ch

python的socket连接端口:代替telnet检测服务器端口

场景: 在使用linux过程中,我们常用telnet来测试对方服务器某个端口是否开通,但linux默认没有安装telnet客户端,很多时候临时安装telnet会比较麻烦,这时候就可以使用python来做简单测试了. python import socket s=socket.socket() s.connect(("IP",port)) s.close 注:其实就是调用的socket模块,和telnet一样只能来测试tcp端口. 脚本:  1 #!/usr/bin/python   2

Linux下利用nc命令来监控检测服务器的端口使用情况(转载)

最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉需要能够立即告警处理.批量的系统监控比较好的是用nagios软件来实现,这样小项目专门装一个nagios软件,有点繁琐了.在网上查了一些资料,总结实验了一下,可以用简单的nc命令来实现. 一.nc命令检测端口的用法 # nc -v -w 10 %IP% -z %PORT% -v 显示指令执行过程.

如何实时检测mysql主从状态,并做邮件告警?

实时检测mysql主从状态,并做邮件告警 需求分析: 当我们做完主从后,主从成功的话,Slave_IO_Running和Slave_SQL_Running两个进程的状态就为yes,但是在做主从同步时也不排除,会发生一些意外的情况,所以我们需要写个脚本来实时检测Slave_IO_Running和Slave_SQL_Running的状态,一旦mysql主从状态出现了状况,就通过邮件发送告警,然后再做维护. 脚本思路: 定时检测mysql主从状态,说白的了就是通过脚本让系统去自我检测主从状态,如果是主

nginx自动检测后台服务器健康状态

转自http://www.iyunv.com/thread-38535-1-1.html 公司业务线上对后端节点的健康检查是通过nginx_upstream_check_module模块做的,这里我将分别介绍这三种实现方式以及之间的差异性. 一.ngx_http_proxy_module 模块和ngx_http_upstream_module模块(自带)       严格来说,nginx自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带的ngx_http_proxy_module

[转帖]Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践

Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践 https://www.jianshu.com/p/d4e31301ba2e 一.问题描述 Linux服务器的配置是4核16G,将war包部署到tomcat后,启动tomcat,发现内存占用率不高,但是CPU一直高达100%:浏览器输入相关url也无法访问该项目,且tomcat的进程一直存在,程序的配置什么的都没问题啊,一头雾水......通过top命令查看服务器的性能状况如下: [[email prote