java使用线程池查询当前网段局域网ip

Java网络编程与DDOS防御:从Socket原理到系统韧性建设 网络编程是构建现代分布式系统的核心技术,其基础在于对TCP/IP协议栈和Socket通信机制的深入理解。Socket作为网络通信的端点,通过操作系统提供的系统调用实现进程间跨网络的数据交换,其工作模式(阻塞/非阻塞)和协议选择(TCP/UDP)直接影响着程序的并发性能与资源效率。在工程实践中,高并发场景下的线程池管理与连接复用是保障系统稳定性的关键,不当的资源分配可能导致本地端口耗尽或内存泄漏。从安全视角看,理解网络协议的潜在滥用风险,如SYN Flood或HTTP Flood的攻击原理,能够帮助开发者构建 阅读详情

调用process类 进行ping

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 * ping测试
 * @author kernel 
 *
 */
public class PINGUtil {
    private final ArrayList<String> ping_res;
    public ArrayList<String> getResult(){
        return ping_res;
    }
    public  PINGUtil() throws UnknownHostException{
        ping_res=new ArrayList<String>();
        InetAddress inet=InetAddress.getLocalHost();
        String hostadress=inet.getHostAddress();
        System.out.println("hostadress:"+hostadress);
        int k=0;
        k=hostadress.lastIndexOf(".");
        String ping_sub=hostadress.substring(0,k+1);
        System.out.println("start execute");//获取网段
        ExecutorService exec=Executors.newFixedThreadPool(30);

        for(int i=1;i<=255;i++){     
             String pingip=ping_sub+i;
              exec.execute(new PingTread(pingip));
        } 
        System.out.println("run shutdown");
        exec.shutdown();//terminate shut 任务完成  就关闭线程
        System.out.println("asyc task:");
        try {
            System.out.println("awaitTermination task start");
            //堵塞time out 30s block 超时 直接跳过awaitTermination 但是exec会继续未完成的任务
            exec.awaitTermination(100000, TimeUnit.MILLISECONDS);
            System.out.println("awaitTermination task end");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("end execute");

    }
    public class PingTread extends Thread{
        String ip;
        public PingTread(String ping_sub){
          this.ip=ping_sub; 
        }
        @Override
        public void run() {
            // TODO Auto-generated method stub
            super.run();
             InputStreamReader in=null;
             BufferedReader br=null;
                try {
                    /**
                     * Linux:ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
                     *  [ -d] [ -D ] [ -n ] [ -q ] [ -r] [ -v] [ \ -R ] [ -a addr_family ]
                     *  [ -c Count ] [ -w timeout ] [ -f | -i \ Wait ] 
                     *  [ -l Preload ] [ -p Pattern ] [ -s PacketSize ] 
                     *  [ -S hostname/IP addr ] \ [ -L ] [ - I a.b.c.d. ] 
                     *  [ -o interface ] [ -T ttl ] Host [ PacketSize ] \ [ Count ]
                     * 
                     * Windows: 
                     * ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
                     * [-r count] [-s count] [[-j host-list] | [-k host-list]]
                     * [-w timeout] target_name
                     * 
                     */
                    Process proces=Runtime.getRuntime().exec("cmd.exe /c ping "+ip+" -w 300 -n 1");//win /c 关闭          
                    //Process proces=Runtime.getRuntime().exec("/usr/bin/sh /c ping "+ip+" -w 300 -c 1");//linux /c 关闭              
                    //System.out.println("proces.hashCode() "+proces.hashCode());
                    in=new InputStreamReader(proces.getInputStream());
                    br=new BufferedReader(in);                  
                    StringBuffer sb=new StringBuffer();         
                    String buff;

                    while((buff=br.readLine())!=null){                  
                        sb.append(buff);                    
                    }   

                    if(sb.indexOf("timed out")==(-1)){
                        System.out.println(sb.toString());
                        //可以ping通的ip
                        ping_res.add(ip);
                    }
                    if(proces.waitFor()==0){
                        System.out.println("进程结束"); 
                    };


                } catch (IOException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }finally{
                    if(br!=null){
                        try {
                            br.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if(in!=null){
                        try {
                            in.close();
                        } catch (IOException e) {               
                            e.printStackTrace();
                        }
                    }

                }

        }

    }

    /**
     * @param args
     * 
     */
    public static void main(String[] args) throws UnknownHostException {
        PINGUtil pin= new PINGUtil();
        ArrayList<String> re=pin.getResult();
        for(String s:re){
            System.out.println("本地局域网:"+s);
        }

    }

}

运行结果:

hostadress:192.168.2.103
start execute
run shutdown
asyc task:
awaitTermination task start
Pinging 192.168.2.1 with 32 bytes of data:Reply from 192.168.2.1: bytes=32 time=1ms TTL=64Ping statistics for 192.168.2.1:    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:    Minimum = 1ms, Maximum = 1ms, Average = 1ms
进程结束
Pinging 192.168.2.103 with 32 bytes of data:Reply from 192.168.2.103: bytes=32 time<1ms TTL=64Ping statistics for 192.168.2.103:    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:    Minimum = 0ms, Maximum = 0ms, Average = 0ms
进程结束
Pinging 192.168.2.102 with 32 bytes of data:Reply from 192.168.2.102: bytes=32 time=126ms TTL=64Ping statistics for 192.168.2.102:    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:    Minimum = 126ms, Maximum = 126ms, Average = 126ms
进程结束
Pinging 192.168.2.255 with 32 bytes of data:Reply from 192.168.2.1: bytes=32 time=6ms TTL=64Ping statistics for 192.168.2.255:    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:    Minimum = 6ms, Maximum = 6ms, Average = 6ms
进程结束
awaitTermination task end
end execute
本地局域网:192.168.2.1
本地局域网:192.168.2.103
本地局域网:192.168.2.102
本地局域网:192.168.2.255
java获取局域网ip列表 使用java获取所在局域网的所有在用ip,可以检测目前有哪些ip在使用 立即下载

相关推荐

java线程扫描ip地址

简单的实现扫描IP地址的JAVA程序 供大家参考!daj

java 获取本机某个网段的IP地址

// 获取本机168.168.168.0/18 网段的地址 public static void main(String[] args){ String subNet = "168.168.168.50"; String substring = subNet.substring(0, subNet.lastIndexOf(".")); try { Enumeration<NetworkInterface> allNetInt

qq249121208的博客 645

Java多线程端口扫描程序(IP地址段)

myeclipse写的Java程序,支持IP地址段的多线程扫描,只扫描tcp端口

Java IP获取工具类

/** * 获取ip的工具类 */ public class IpUtils { public static String getIpAddr(HttpServletRequest request) { String ipAddress = null; try { ipAddress = ...

a1083960595的博客 669

易语言-多线程换IP源码(调用鱼刺线程池)

多线程换IP源码(调用鱼刺线程池) cc971113

java过滤IP地址代码

String remoteHost=request.getRemoteHost(); log.info("Request from host:"+remoteHost); //判断客户计算机IP地址是否合法,以127开头的表示不合法,禁止访问

java获取ip网段下的所有ip地址、ip数量、第一个和最后一个ip

开发者可以更容易地创建网络客户端和服务器,而无需深入了解底层网络协议的细节。这个库为每种协议都提供了相应的 API,使得网络编程变得更加简洁和直观。支持多种常见的网络协议,包括但不限于 FTP、TFTP、Telnet、rlogin、SMTP、POP3、NNTP 和 Finger 等。是 Apache Commons 项目下的一个子项目,提供了一组网络协议的实现,使得 Java 开发者能够更方便地进行网络编程。--net工具-->

qq_52689991的博客 912

从零到一:Zephyr RTOS 在 STM32F4 上的移植与实战(含设备树配置详解)

本文详细介绍了如何从零开始将Zephyr RTOS移植到STM32F4开发板,涵盖开发环境搭建、硬件抽象层分析、设备树配置及系统裁剪等关键步骤。通过实战案例,帮助开发者掌握Zephyr RTOS在嵌入式设备中的应用,提升物联网边缘计算设备的开发效率。

weixin_26976635的博客 592

java中获取网络ip

平常项目中我们需要在日志记录中记录当前登录人的ip等信息,因此,下面列出一个公共的获取本地ip的方法。 import javax.servlet.http.HttpServletRequest; public class IPUtil { public static String getIPFromRequest(HttpServletRequest request){ String ip = r...

qq_34395852的博客 1284

使用VS Code创建第一个Flutter工程

你可以使用任意文本编辑器结合命令行工具来开发Flutter应用。然而,我们推荐使用本文介绍的编辑器插件以获取更好的开发体验。这些插件提供了代码补全、代码高亮、widget辅助编辑等功能,以及为项目的运行和调试提供支持。推荐的开发工具有VS Code、Android Studio、IntelliJ。本文将重点介绍如何使用VS Code进行Flutter应用开发。

2501_91373349的博客 2129

等保测评-瀚高数据库

一般适用于等保测评

m0_54146694的博客 1634

java获取项目所在服务器的ip地址和端口号(获取当前ip地址)

不传参数,直接通过ServletRequestAttributes获取当前项目所在服务器的端口号和ip地址 public static String getUrl(){ ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = requestAttribut

myStyle的博客 3万+

电子电气架构 --- 整车电源管理

保证启动能力:防止因电池电量耗尽而导致的车辆无法启动,这对于确保车辆在任何时候都能可靠运行至关重要。 延长电池寿命:通过避免电池深度放电,有助于延长其使用寿命,减少更换电池的需求和成本。 提升用户体验:虽然负载被关闭可能会暂时影响舒适度,但通过在必要时自动采取行动,可以减少驾驶员的焦虑和不确定性,提高整体的用户满意度。

Soly_kun的博客 1088

java网络编程---测试本网段可用的ip数量

首先我们需要做的就是确定自己主机的ip地址,然后得出所在的网段,最后就是ping该网段的所有ip地址。 获取本机的ip地址和网段 InetAddress host = InetAddress.getLocalHost(); String ip = host.getHostAddress(); System.out.println("本机的ip : " + ip); System.out.println("网段是:" + ip.substring(0,ip.lastIndexOf('.'))); 得出网段之

陈常杰的博客 360

YOLOv11改进策略【独家融合改进】| MobileNetV4+BiFPN,轻松实现降参涨点,适用专栏内所有的骨干替换

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 2362

GTSAM | gtsam::ISAM2

本节简单介绍`gtsam::ISAM2`类。

九七的博客 734

Java 查询本主机IP所在网段有多少可用IP(*)

import java.net.InetAddress; import java.net.UnknownHostException; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.io.BufferedReader; import java.io.IOExcept

qq_37758122的博客 646

硬件工程师学习-硬件的单元测试(UT)(1)电源与时钟的测试

我们在设计的时候,通过控制电源的上电使能管脚或者通过MOSFET、或者专用的电源上电控制芯片,控制不同电源的上电时序,以确保每个芯片的电源上电时序是满足芯片的要求的。我们在测试的时候,需要对相关的要求一一测试,以确认每个上电时序满足要求的。在维基百科中,相位噪声的定义是“时域不稳定性(抖动)导致波形在相位上发生快速、短期、随机的波动,这种波动在频域中的表现即为相位噪声”。单元测试,一般是指基于开发人员自行开展的功能测试及各个功能单元的单元测试,是硬件信号级的测试,分为基本测试和信号完整性测试。

qq_43416206的博客 4037

Java多线程扫描局域网中的IP

package cn.ghostcloud.clusterservice.utils; import cn.ghostcloud.clusterservice.common.PageListUtils; import cn.ghostcloud.clusterservice.common.PageResult; import cn.ghostcloud.clusterservice.vo.IpScanningVo; import lombok.extern.slf4j.Slf4j; import org.

weixin_43589990的博客 1491

企业级 Token 中转架构设计:高并发、多模型、费用监控一次搞定

摘要:本文针对企业级AI开发中的多模型接口混乱、高并发稳定性差及Token费用失控等痛点,提出一套2026年企业级Token中转架构解决方案。该方案采用五层分层设计(接入层、网关层、调度层、服务层、存储层),实现多模型统一接口、智能路由、高并发限流容错及精细化成本监控。核心功能包括:异构模型标准化接入、动态路由策略(场景/成本/负载/容灾)、多级限流熔断机制、全链路Token计费与安全防封体系(指纹清洗、IP池隔离)。通过分层解耦与模块化设计,企业可降低50%成本、提升99%稳定性,并避免封号风险。文章还提

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 149

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java网络编程--获取IP地址

【代码】Java网络编程--获取IP地址。

weixin_47903162的博客 688

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JB2-1-Linux

Linux,虚拟化,VmWare工具,新建虚拟机,OpenEuler系统,配置网络,NAT转发,SSH终端工具,Linux常用软件,同步系统时间,防火墙,Linux系统结构,Linux常用命令等。

周航宇的博客 2252

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python面试题——网络编程和并发

python面试题——网络编程和并发 1、简述 OSI 七层协议。 物理层(电信号、比特流) 基于电器特性发送高低电压(电信号) RJ45、IEEE802.3 数据链路层(数据帧) 定义了电信号的分组方式,分组方式后来形成了统一的标准,即以太网协议ethernet ppp(点对点)、VLAN(虚拟局域网)、MAC地址 ...

hqs2212586的专栏 333

Wireshark抓包过滤实战:从捕获到显示,精准定位网络问题

网络协议分析是网络工程师和运维人员进行故障排查与性能优化的基础技能。其核心原理在于捕获并解析网络数据包,从而透视网络通信的完整过程。掌握高效的过滤技术,能极大提升从海量数据中提取关键信息的能力,实现从“噪音”中精准定位问题根源的技术价值。无论是诊断网站访问缓慢、服务端口连接失败,还是分析特定应用的网络行为,熟练运用捕获过滤器与显示过滤器都是关键。本文聚焦Wireshark这一主流工具,通过实战案例,系统讲解如何利用过滤命令进行网络排障与性能分析,帮助工程师快速掌握这一核心技能。

weixin_33676492的博客 402

网络(三)|彻底搞懂网络底层!五层模型、序列化、MAC/ARP、MTU 一次吃透

上一篇《网络(二)》我们完整落地 Java Socket 编程实战,手写 UDP 词典服务器、TCP 单线程 / 多线程 / 线程池并发服务端,掌握了网络编程代码实现。但只会写代码不足以应对后端面试,必须吃透底层网络理论。本篇从核心分层思想切入,自上而下讲解 TCP/IP 五层模型,重点讲解程序员日常开发接触最多的应用层:XML/JSON/Protobuf 三种序列化格式、HTTP、DNS 域名解析;

2401_88393233的博客 248

计算机面试例题搜集(更新)

MySQL的逻辑架构从上到下分为四层。最上面是连接层,负责处理客户端的连接请求,包括TCP握手、用户名密码认证、权限校验,以及维护连接线程。连接池就在这里,每个客户端连接会分配一个独立线程,线程会缓存起来复用,减少频繁创建销毁的开销。连接层还会做安全检查,比如SSL连接加密。第二层是服务层,这是MySQL的核心功能层。它包含SQL接口模块,接收SQL语句并返回结果;查询解析器会把SQL解析成解析树,检查语法和语义是否正确;查询优化器会根据成本模型选择最优执行计划,比如决定用哪个索引、join顺序怎么排;还有

2301_81704123的博客 434
上一篇: android 屏幕全屏、 横竖
下一篇: Eclipse 安装 Free marker插件
kernel_
博客等级 码龄12年 8粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值