直接上代码:
import?java.net.Socket;
import?java.text.SimpleDateFormat;
import?java.util.Date;
public?class?PortScanner?extends?Thread?{
private?int[]?p;
Socket?ss?=?null;
public?PortScanner(int[]?p)?{
this.p?=?p;
}
public?static?void?main(String[]?args)?{
new?PortScanner(new?int[]?{?i?◆?1,?i?◆?100?}).start();
@Override
public?void?run()?{
for?(int?i?=?p[0];?i?p[1];?i◆◆)?{
try?{
System.out.println("扫描到端口:?"?◆?i);
}?catch?(Exception?e)?{
//?System.out.println("关闭端口:?"?◆?i);
很简单,给你写个例子:
try {
ServerSocket sskt = new ServerSocket(i);
System.out.println("端口[" ◆i ◆ "]可用.");
} catch (IOException e) {
System.out.println("端口 [" ◆ i ◆ "] 被占用.");
不要用new InetSocketAddress(host, port));,直接使用new InetSocketAddress( port));,主机用绑定所有
Socket
client
=
null;
try{
new
Socket(IP,
port);
System.out.println("端口已开放");
client.close();
}catch(Exception
e){
System.out.println("端口未开放");
====================================================
这样就能正常捕获这个异常,不会阻止程序正常运行!
public?class?TestPort
{
public?static?void?main(String[]?args)
//?得到进程ID
public?static?String?getPID(String?port){
InputStream?is?=?null;
BufferedReader?br?=?null;
String?pid?=?null;
try
String[]?args?=?new?String[]{"cmd.exe","/c","netstat?-aon|findstr",port};
is?=?Runtime.getRuntime().exec(args).getInputStream();
br?=?new?BufferedReader(new?InputStreamReader(is));
String?temp?=?br.readLine();
if(temp?!=?null){
String[]?strs?=?temp.split("\\s");
pid=strs[strs.length-1];
catch?(IOException?e)
e.printStackTrace();
}finally{
br.close();
return?pid;
//根据进程ID得到映像名称
public?static?String?getProgramName(String?pid){
String?programName?=?null;
String[]?args?=?new?String[]{"cmd.exe","/c","tasklist|findstr",pid};
programName=strs[0];
return?programName;
//根据映像名称关闭进程
public?static?void?killTask(String?programName){
String[]?args?=?new?String[]{"Taskkill","/f","/IM",programName};
Runtime.getRuntime().exec(args);
//题主自己看看具体怎么get它的ip地址,好久没有写,不知道了
以上就是土嘎嘎小编为大家整理的java代码检查端口相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!