You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Java中的打印机驱动程序查找WiFi打印机的IP地址?

如何通过打印机名称获取同一WiFi网络下的打印机IP地址

现有获取打印机信息的代码

以下代码可获取系统中已安装的打印机驱动信息并打印到控制台:

PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);

System.out.println("Available Printer Drivers:");
for (PrintService service : printServices) {
    String printerName = service.getName();
    String driverClassName = (String) service.getAttribute(PrintServiceLookup.DRIVER);

    System.out.println("Printer Name: " + printerName);
    System.out.println("Driver Class Name: " + driverClassName);
    System.out.println("--------------------------------------");
}

需求说明

已知所有打印机与笔记本电脑处于同一WiFi网络下,需要通过上述代码获取到的打印机名称,查询对应打印机的IP地址。

实现方案

在同一局域网内,可通过以下几种方式获取打印机IP:

1. 解析打印服务的URI属性

多数网络打印机的PrintService会包含PrinterURI属性,其中直接包含打印机的网络地址(可能是IP或主机名),可解析该属性提取IP:

PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);

System.out.println("Available Printers with IP:");
for (PrintService service : printServices) {
    String printerName = service.getName();
    PrinterURI printerURIAttr = (PrinterURI) service.getAttribute(PrinterURI.class);
    String ipAddress = null;

    if (printerURIAttr != null) {
        URI uri = printerURIAttr.getURI();
        // 提取URI中的主机部分,可能是IP或主机名
        String host = uri.getHost();
        // 如果是主机名,尝试解析为IP
        try {
            InetAddress address = InetAddress.getByName(host);
            ipAddress = address.getHostAddress();
        } catch (UnknownHostException e) {
            ipAddress = "无法解析IP: " + host;
        }
    } else {
        ipAddress = "未找到URI属性";
    }

    System.out.println("Printer Name: " + printerName);
    System.out.println("IP Address: " + ipAddress);
    System.out.println("--------------------------------------");
}

2. 直接通过打印机名称解析IP

如果打印机名称本身是局域网内的主机名,可直接用InetAddress类解析:

// 假设printerName是从之前代码中获取的打印机名称
try {
    InetAddress printerAddr = InetAddress.getByName(printerName);
    String ip = printerAddr.getHostAddress();
    System.out.println(printerName + " 的IP地址: " + ip);
} catch (UnknownHostException e) {
    System.out.println("无法解析 " + printerName + " 的IP地址");
}

3. 提取打印服务的其他网络属性

部分打印机可能会在PrintService的属性中包含PrinterLocation或自定义属性,其中可能携带IP信息,可尝试获取:

String location = (String) service.getAttribute(PrinterLocation.class);
// 解析location字段中的IP(如果存在)

内容的提问来源于stack exchange,提问作者Aravind A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 01:03:20