网页检测不到java无法打印_如果PC连接到网络打印机,如何检查java?
根據“
How Network Printing Works”,它實際上取決于打印機的類型和它支持的協議.如果您知道打印機使用的IP和端口,并且您的打印機支持
SNMP(僅選擇協議),則可以使用SNMP協議1查詢打印機以獲取信息. Java lib
SNMP4j可以幫助您實現這一目標.我建議不要使用它,除非打印機,IP和端口永遠不會(!)更改您的設置.這是因為你可能遇到幾個問題
>如何發現未知的打印機?
>如何發現打印機使用的端口?
>如何發現打印機使用的協議?
讓我們假設上面的問題不是什么大問題,并假設每臺打印機都支持SNMP.如何從中獲取信息?除了使用上面提到的java lib之外,您還可以在終端中使用linux中的snmpget.語法如下:
snmpget -v1 -c public host-ip OID
OID是object identifier,用于打印機的每個屬性,從頁面計數到碳粉盒信息.如果您不添加OID,您將獲得可用OID的完整列表.問題的關鍵在于,雖然所有OID都是標準化的,但OID的使用因品牌和打印機型號與打印機型號而異.對于我的惠普,以下作品:
snmpget -v1 -c public 192.168.1.10 iso.3.6.1.2.1.43.17.6.1.5.1.2
并返回
iso.3.6.1.2.1.43.17.6.1.5.1.2 = STRING: "Ready"
使用OID返回HP的打印機狀態.但如果我在佳能上使用相同的OID,我會得到
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: iso.3.6.1.2.1.43.17.6.1.5.1.2
因此,它甚至不是SNMP一般適用的,也沒有提到其他可用的協議.
考慮到所有這些信息,我認為最簡單的方法就是檢查是否可以通過此代碼在其中一個通用打印機端口上建立與打印機的連接
boolean available = false;
try {
String serverAddress = "192.168.1.10";
Socket s = new Socket(serverAddress, 9100);
s.close();
available = true;
} catch (IOException e) {
available = false;
}
System.out.println("printer available: " + available);
當然,這只有在你已經知道打印機ip的情況下才有效.
總結
以上是生活随笔為你收集整理的网页检测不到java无法打印_如果PC连接到网络打印机,如何检查java?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 重复的记录数,如何确定Or
- 下一篇: iec61131 3 html5,IEC