设为首页 - 加入收藏 - 联系我们 - 广告合作 QQ 技术群1:29388706 群2:6069689(每月清理潜水用户)┆繁體中文
  PC外设之家
 首 页  文章中心 下载中心 经销商 用户交流 新版测试 网上商城
 打印文章: 导购指南 | 专业评测 | 基础知识 | 办公耗材 | 应用技巧 | 解决方案 | 连续供墨 | 维护保养 | 维修技术 | 产品资料
 资源下载: 打印机驱动 | 打印机手册 | 一体机驱动 | 一体机手册 | 专业打印驱动 | 专业打印手册 | 固件升级 | 打印管理 | 维修软件
HP打印机 HP笔记本 HP墨盒 扫描仪 投影灯 MP3播放器 维护电脑 激光打印机
打印机墨水 打印机价格 喷墨打印机 投影屏幕 网上兼职 炒股软件 同城交友 网上交友
 
 
   
   
 
您当前的位置:办公打印之家 -> 应用技巧 -> 文章内容  
高级查找
 
课堂Windows打印管理在Linux平台实现
作者:佚名  来源:办公打印之家整理  发布时间:2006-11-21 1:12:23  发布人:admin

减小字体 增大字体


5.4发送 IPP 请求

    设置好 IPP 请求之后,通过函数 cupsDoRequest() 就可以把指定IPP请求发送到服务器端。如果请求发送成功,那么请求发送方将得到有效的IPP应答pIPPRes。需要指出的是,即使 IPP 应答有效,也并不意味着所有 IPP 请求的内容都得到了正确的回复。还需要进一步检查 IPP 应答的状态代码 "request.status.status_code" 来核实反馈信息的有效性。

ipp_t *pIPPRes = cupsDoRequest(pHTTPConnection, pIPPReq, "/");    if (!pIPPRes)    {        g_print("No response from CUPS server\n");        return 0;    }    if (pIPPRes->request.status.status_code > IPP_OK_CONFLICT)    {        printf("IPP Error: %s\n", ippErrorString(pIPPRes->request.status.status_code));        ippDelete(pIPPRes);        return 0;    }   
 
5.5获取 IPP 应答

    如果上述操作都成功返回,就可以进一步从 pIPPRes 结构中提取感兴趣的信息。在下列代码中,变量 pPrinterName,pPortName 和 pPrinterModel 分别用来存储打印机名称,打印机端口号和打印机的类型信息。通过依次枚举 IPP 应答 pIPPRes 来寻找属性 pAttr->name 为 "printer-name" 或 "device-uri" 或 "printer-make-and-model" 的分量,就可以得到上述信息。

char *pPrinterName = NULL;    char *pPortName = NULL;    char *pPrinterModel = NULL;    for (ipp_attribute_t *pAttr = pIPPRes->attrs; pAttr != NULL; pAttr = pAttr->next)    {        if (pAttr->group_tag == IPP_TAG_PRINTER)        {            if (0 == strcmp(pAttr->name, "printer-name"))                pPrinterName = pAttr->values->string.text;            if (0 == strcmp(pAttr->name, "device-uri"))                pPortName = pAttr->values->string.text;            if (0 == strcmp(pAttr->name, "printer-make-and-model"))                pPrinterModel = pAttr->values->string.text;        }    }   

5.6释放内存

    最后,需要释放相关内存以免内存泄露:

httpClose(pHTTPConnection);    ippDelete(pIPPRes);   
 
6字符编码转换

    在实现打印机管理的移植过程中,还需要特别注意字符编码转换的问题。当然,字符编码问题不仅仅局限于本文所探讨的范畴,它同时还是所有应用程序移植都需要特别关注的技术细节。以本文为例,在 Linux 上获取的字符串,比如打印机名称,通常是 UTF-8(Unicode Transformation Format) 编码的。

    而 Windows 应用程序并不使用 UTF-8 编码。由于历史原因,Windows 程序或使用 ANSI 编码方式,或使用UTF-16 编码方式。因此,从 CUPS 获取的字符串还需要根据程序运行环境进行编码转换,之后才能被 Windows 应用程序使用。字符编码转换可以使用 IBM ICU(International Components for Unicode)来完成。

7.结束语

    移植是一项实现应用程序跨平台运行的核心技术。本文重点阐述了 Windows 打印机管理系统在 Linux 平台上的移植技术。通过具体举例,本文详细分析了打印机管理在 Linux 平台上的移植细节。

    本章涉及的移植架构和移植概念不仅仅局限于打印机管理移植。这些概念和思想也是所有应用程序所通用的。应用程序跨平台移植已经在很多软件中被应用。实现应用程序在不同平台上无缝隙的运行操作也将是每位移植技术人员的共同目标。<--Content End-->

上一页  [1] [2] [3] [4] 

收藏到网摘: 新浪ViVi 搜狐网摘 365Key网摘 天极网摘 我摘 POCO网摘 博采网摘 添加到百度搜藏YouNote网摘 和讯网摘 博拉网 igooi网摘 I2Key网摘 Google书签 Del.icio.us Yahoo书签 diigo it 提交新发现,Dig it DIGG this story

复制本文网址|保留收藏或推荐给QQ/MSN上的好友共享^_^:
[ ] [返回上一页] [打 印] [收 藏]
上一篇文章:
下一篇文章:
      Solaris 8 设置打印设备       全面了解喷墨打印机的“血液”—墨水
发表评论:
用户名
分 值 100分 85分 70分 55分 40分 25分 10分 0分
说 明
  (注“”为必填内容。)
 
 
栏目导航
· 导购指南 · 专业评测
· 产品资料 · 基础知识
· 办公耗材 · 应用技巧
· 解决方案 · 连续供墨
· 维护保养 · 维修技术
热门下载
热门文章
· 挖掘HP3325喷墨打印机的潜..
· HP LaserJet 5000LE打印机..
· HP 2605系列打印机如何安装..
· 跟我学寸照排版打印 十步搞..
· HP惠普 专用网络打印服务器..
· Star AR3200打印歪斜的校正..
· 几款虚拟打印机的奇妙用途..
· 虚拟打印机使用手册
· 解决Epson LQ-570+指示灯不..
· 如何安装及更换打印机色带..
· 数码照片打印前的快捷曲线..
· 数码照片打印前的魔术处理..
· 主板并口串口已消失 打印机..
· 安装EPSON针式打印机要用操..
· 打印机玩刷机 Canon佳能18..
· 喷墨打印机之色彩校正-显示..
· 佳能LBP-660、LBP-800激打..
· 数码照片打印前 Photoshop..
· 教您安装HP激光打印机硒鼓..
· 图解HP惠普CB436A硒鼓加粉..
相关文章
· 必修课堂的经典技巧三则—..
查看更多与课堂Windows打印管理在Linux平台实现相关内容
 
 
Copyright © 2002-2008 办公打印之家. All Rights Reserved .
湘ICP备06012912号
 
在线客服: 点击这里给我发消息
点击这里给我发消息
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 -网站地图