根据“

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?相关推荐

  1. java 批量打印_用java怎样实现批量打印

    展开全部 下面是实现Java批量打印功能的具体工具类,其中的Info类和UserClass为具体的快递面单中要打印的信息e68a8462616964757a686964616f313333633839 ...

  2. java jar 打印_三种Java打印PDF文档的实例代码

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 1 静默打印 2 显示打印对话框打印 3 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar文件获取及导 ...

  3. java面试题_阿里大厂流出的数百道 Java 经典面试题

    BAT 常问的 Java基础39道常见面试题 1.八种基本数据类型的大小,以及他们的封装类 2.引用数据类型 3.Switch能否用string做参数 4.equals与==的区别 5.自动装箱,常量 ...

  4. java输入输出流_金九银十准备季:Java异常+Java IO与NIO面试题(含答案)

    写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:abel-max/Java-Study ...

  5. java循环输入_【图文+视频新手也友好】Java一维数组详细讲解(内含练习题答案+详解彩蛋喔~)...

    [新手友好型视频+图文] 全面讲解Java一维数组(内含带答案和讲解的练习题彩蛋喔) 看完即上手!更有详解版练习题来帮你加深印象~~ 一.视频讲解 一维数组详解https://www.zhihu.co ...

  6. java jni编译_从源码编译Android系统的Java类库和JNI动态库的方法

    利用源码编译Android系统Java类库 1.编写Java项目和Android.mk文件 ├── Android.mk └── src └── com └── lhw └── framework └ ...

  7. java内置_自包含的应用程序,内置Java

    我已经看过几篇在Java 9中简要提到自包含应用程序的在线演示文稿,但我有一个问题需要我解决. 使用新模块系统,您现在只允许包含运行应用程序所需的最少代码.但是,希望运行应用程序的系统是否仍需要JRE ...

  8. java ui调试_如何使用 IBM i System Debugger 调试 Java 程序

    当在 IBM i 上使用 Java 时,您可以使用 Qshell Interpreter 或者 CL 命令提供的 Java tools,在 Qshell 环境和 IBM i 环境上进行与 Java 开 ...

  9. java idea 模块_使用IntelliJ IDEA搭建多maven模块JAVA项目

    一.新建项目和模块 步骤: 1. 新建一个项目,因为maven管理jar包非常方便,故此处建立一个maven项目:New Project->Maven->(Create from arch ...

最新文章

  1. Caffe Windows版本的编译
  2. python修改类的属性值_python 四种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,直接修改类属性的值...
  3. datatable筛选条件_C#利用DataView的RowFilter对DataTable进行查询筛选
  4. 【BZOJ3328】PYXFIB【矩阵快速幂】【单位根反演】【二项式定理】
  5. 昆山立讯电子工程师_教会徒弟饿死师傅?立讯精密会不会成为第二个富士康
  6. 面试常考题:不调用库函数,怎样实现字符串操作函数?
  7. SAP License:BASIS 事务代码速记
  8. linux nload_Linux nload命令
  9. 大数据与BI的区别在哪
  10. easyUI 鼠标悬浮 和截取
  11. Spring定时任务@Scheduled提前一秒执行
  12. 专题:手把手学习硬件基础之手册阅读------LDOAMS117
  13. HOMAG工控机维修西门子IPC627D维修HG-A.1.0
  14. 乐吾乐Topology-le5le为智慧电力可视化赋能(一)
  15. 西部狂徒自建服务器,在《西部狂徒》中如何快速建立自己根据地?杀人放火是上策...
  16. 大学医学院有计算机专业吗,上大学时辛苦一点,将来工作轻松一点,这些专业可以做到...
  17. Win10系统edge浏览器b站全屏卡顿的解决方法--win10专业版
  18. Check It Again: Progressive Visual Question Answering via Visual Entailment
  19. 开源2周年,openGauss Developer Day 2022全程亮点回顾!
  20. 天津大学校园网环境下访问IEEE网址出现tianjin university账号没有登录的问题

热门文章

  1. 钉钉电脑版如何申请调休 钉钉电脑版申请调休方法
  2. 怎么关闭默认使用腾讯视频播放视频文件
  3. mybatis里mapper.xml中SQL语句if语句嵌套if语句
  4. MySQL中清空表和截断表的区别(新手入门)
  5. idea编辑器中使用@Data注解无效解决办法
  6. 华为笔记本matebook13_华为引领“第三代移动办公”新纪元 华为MateBook开启“智慧化办公”新赛道...
  7. python处理txt文件_python处理txt文件
  8. matlab安装无效距离过远,求助matlab的远程序
  9. 复制Linux虚拟机后的网卡问题解决
  10. 达内培训c语言,【达内C  培训教程】C语言实例 分数之和