在CUPS上实现LPD协议驱动

2023-10-11 09:40
文章标签 实现 协议 驱动 lpd cups

本文主要是介绍在CUPS上实现LPD协议驱动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用CUPS作为网络打印服务器,其他计算机作为客户端可以通过CUPS实现对打印机的管理。

客户端常用方法是通过IPP协议安装打印机驱动。。安装步骤如下:

1)在弹出的对话框中选择“添加打印机”

2)选择添加的打印机类型为“网络打印机” 

3)在URL下输入地址:http://10.2.2.3:631/printers/ll,其中10.2.2.3为cups打印服务器的IP地址,631为cups服务端口,ll为添加的打印机的名称。

4)点击“下一步”,然后提供Windows下的打印机驱动即可。

以上是客户端通过IPP协议安装驱动。但是IPP协议在Windows 2000下并不能完全兼容(在某些网段上无法搜索到打印机),而且IPP协议有个缺点,就是在打印机关闭的情况下,客户端某些软件启动会搜索打印机。某些软件在调用createNewDocument函数时花费的时间很长。该函数为windows的MFC库函数,为根据文档模板中记录的运行时信息创建文档视图模型对象。根据微软公开的资料,与打印机状态没有关系,但在实际使用中,发现该函数调用底层库时,对默认打印机的状态进行查询。由于默认打印机设为网络打印机,操作系统底层会从网络中搜索该台打印机,由于该打印机状态为关机,无法及时得到它的状态,所以操作系统底层会在网段上搜索打印机,直到超时返回,此过程需要10秒钟到1分钟,视网络环境而定。

以上缺点影响了CUPS在某些系统中的应用。为解决这个问题,可以将打印协议改为LPD协议,从而避免每次使用打印机时进行实时查询。LPD协议为假脱机协议,对Windows而言,安装了LPD协议的打印机始终是出于“就绪”状态。只有在真正进行打印任务时,Windows才会将数据通过LPD协议发送到打印机,此时若打印机出于“不可使用”状态,则会返回给上层应用软件:该打印机不可用。

CUPS本身支持LPD协议。在CUPS服务器端,需要将inetd添加到系统服务中,建立/etc/inetd.conf,添加一行:printer stream tcp nowait root/arm_cups/lib/cups/daemon/cups-lpd cups-lpd。这样CUPS服务器端就支持LPD协议了。

(注意:arm_cups/etc/cups/cupsd.conf 里调试等级不能是debug2。在ipp.c中add_job函数中,一个调试信息cupsdLogMessage(CUPSD_LOG_DEBUG2,"add_job(%p[%d], %p(%s), %p(%s/%s))",

                 con, con->http.fd, printer, printer->name,

                filetype, filetype->super,filetype->type);

会导致程序崩溃。因为filetype 为NULL。


安装步骤如下:

1.    进入控制面板----打印机和传真机,点击“添加打印机”按钮,如下:


2.    点击“下一步”,在弹出的界面上,选择“连接到此计算机的本地打印机”,点击“下一步”。


3.    在弹出的“选择打印机端口”界面上,选择“创建新端口”,端口类型为“Standard TCP/IP Port”,然后点击“下一步”。

4.    在弹出的界面上,点击“下一步”。

5.    在弹出的“添加端口”界面上,打印机名或IP地址栏输入打印机的IP地址,点击“下一步”。


6.    在弹出的“需要额外端口信息”界面上,点击“自定义----设置”;


7.    点击“下一步”,在弹出的界面上选择LPR,队列名称为“打印机名称”,将“启用了LPR字节计数”前的复选框勾上,点击确定。特别注意,本步骤非常重要。.


8    点击确定后回到前一窗口,再点击“下一步”,再点击“完成”。

9.    在弹出的界面上,点击“从磁盘安装…”。

接下来正常安装驱动文件。安装成功后,则在“打印机和传真”窗口中显示出安装的打印机。






这篇关于在CUPS上实现LPD协议驱动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/187163

相关文章

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现