在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.    在彈出的界面上,點擊“從磁盤安裝…”。

接下來正常安裝驅動文件。安裝成功後,則在“打印機和傳真”窗口中顯示出安裝的打印機。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章