4

Javaソケットプログラムを使用してプリンターのステータスを見つける方法はありますか? このプログラムは、プリンターのステータスを識別する必要があります。そのような

  1. プリンターのオン/オフ/理想。
  2. 今の仕事。
  3. 試行中の用紙レベル。
  4. トナーを残す。

javax.print API を使用しました。これは、プリンターでドキュメントを印刷するのに役立ち、4 つの属性を一覧表示します。

  • printer-is-accepting-jobs: ジョブの受け入れ中

  • プリンター名: 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 を指定しました) スレッド"main" java.lang.IllegalArgumentException: Address type tcp/ip unknownで例外 Exception が発生しました。これを解決するための助けを期待しています。

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 に答える