ping批量端口

复制代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
 * Description TestRemotePort
 * Date 2021/11/20
 * Created by www.ij34.com
 */
public class TestRemotePort {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        //ping的端口
        for (int i = 1; i <= 1000; i++) {
            list.add(i);
        }
        int threads = 50;//线程数
        int start = 0;
        int size = list.size() / threads;
        for (int i = 1; i <= threads; i++) {
            new Thread(new ThreadTask(list.subList(start, (start + size) > list.size() ? list.size() : start + size))).start();
            start += size;
        }


    }


    private static class ThreadTask implements Runnable {
        List list;

        public ThreadTask(List<Integer> list2) {
            list = list2;
        }

        @Override
        public void run() {
            list.forEach(c -> {
                boolean b = reachableIP("f2od82dan8xypungixks.okefafs.com",(Integer) c);
                if (b) {
                    System.out.println(Thread.currentThread().getId() + "线程成功端口---------------" + c);
                } else {
//                    System.out.println(Thread.currentThread().getId()  + "|" + c);
                }
            });
        }

        boolean reachableIP(String url,int port) {
            String cmd = "tcping -n 1 "+url+" " + port;
            try {
                Process p = Runtime.getRuntime().exec(cmd);
                InputStream is = p.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                String line;
                reader.readLine();
                String str = reader.readLine();
                try {
                    p.waitFor();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                is.close();
                reader.close();
                p.destroy();
                return str.contains("Port is open") ? true : false;
            } catch (IOException e) {
                e.printStackTrace();
                return false;
            }
        }
    }
}
复制代码

 

posted on   Honey_Badger  阅读(174)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2016-11-21 student表中创建触发器,实现student表和student _course表的级联删除

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
github
点击右上角即可分享
微信分享提示