4

有什么方法可以使用 java socket 程序查找打印机状态吗?该程序需要识别打印机状态。如

  1. 打印机开/关/理想。
  2. 当前工作。
  3. 试纸水平。
  4. 碳粉离开。

我使用了 javax.print API,这可以帮助我在打印机中打印文档并列出 4 个属性

  • 打印机正在接受作业:接受作业

  • 打印机名称:myPrinter

  • 排队作业计数:0

  • 颜色支持:不支持

有些人让我使用snmp4j或 LPR 来了解状态。

我使用 snmp 编写了一个应用程序。我无法成功。您可以在链接snmp application找到代码形式 。在这段代码中(第 38 行SNMPManager client = new SNMPManager("udp:127.0.0.1/161");,我们需要提供打印机的 IP 地址。所以我给了 tcp/ip:127.0.0.1/161)我在线程中遇到异常 Exception "main" java.lang.IllegalArgumentException: Address type tcp/ip unknown,我期待帮助解决这个问题。

4

1 回答 1

1
PrintService printer = PrintServiceLookup.lookupDefaultPrintService();
AttributeSet att = printer.getAttributes();

for (Attribute a : att.toArray()) {
    String attributeName;
    String attributeValue;

    attributeName = a.getName();
    attributeValue = att.get(a.getClass()).toString();

    String gh = (attributeName + " : " + attributeValue);

    if (gh.equals("printer-is-accepting-jobs : not-accepting-jobs")) {
        JOptionPane.showMessageDialog(rootPane, "Printer Not Available");
    }

    if (gh.equals("queued-job-count : 0")) {
        JOptionPane.showMessageDialog(rootPane, gh);
    }

    System.out.println(gh);
}
于 2013-09-03T15:23:29.947 回答