ºìÁªLinuxÃÅ»§
Linux°ïÖú

Windows ´òÓ¡¹ÜÀíÔÚLinux ƽ̨ʵÏÖ

·¢²¼Ê±¼ä:2006-11-18 10:57:40À´Ô´:ºìÁª×÷Õß:veryfan
¡¡¡¡±¾ÎĽéÉÜÁËÒ»ÖÖÔÚ Linux ƽ̨ÉÏʵÏÖ Windows ´òÓ¡»ú¹ÜÀíµÄÒÆÖ²·½·¨¼°¾ßÌåʵÏÖϸ½Ú¡£Í¨¹ý±¾ÎÄ£¬¶ÁÕß¿ÉÒÔÁ˽âÏà¹Ø¼¼Êõ£¬²¢°ÑÕâЩ¼¼ÊõÖ±½ÓÓ¦Óõ½Êµ¼ÊÈí¼þ¿ª·¢ÖС£

¡¡¡¡1.Àí½â Windows ´òÓ¡»ú¹ÜÀíºÍ Linux ´òÓ¡»ú¹ÜÀí

¡¡¡¡Windows ƽ̨ÌṩÁ˷dz£¼òµ¥¶øÇÒÍêÉÆµÄ´òÓ¡»ú¹ÜÀíϵͳ¡£ÔÚ Windows ±à³ÌÖУ¬´òÓ¡¹¦Äܱ»ÈÚÈëÁË GDI £¨Graphic Device Interface£©Ä£¿é¡£ÔÚ GDI Ä£¿éÖУ¬³ÌÐòÔ±Ö»Òªµ÷Óà EnumPrinters() µÈ APIs ¾Í¿ÉÒÔÇáËÉ»ñÈ¡´òÓ¡»úÐÅÏ¢¡£Windows µÄÕâÖÖ³ÉÊì´òÓ¡¹ÜÀí»úÖÆºÜ´ó³Ì¶ÈÉϵÃÒæÓÚ´òÓ¡»ú¹©Ó¦ÉÌËùÌṩµÄÍêÉÆµÄ´òÓ¡»úÇý¶¯¡£Windows µÄ´òÓ¡»úÇý¶¯ÆÁ±ÎÁË´òÓ¡»úµÄ¾ßÌå´òӡʵÏÖϸ½Ú£¬Í¬Ê±ÎªÉϲãµ÷ÓÃÌṩÁ˼òµ¥µÄ API ½Ó¿Ú¡£

¡¡¡¡Óë Windows ƽ̨Ïà·´£¬´òÓ¡»ú¹ÜÀí»úÖÆÔÚ Linux ƽ̨ÉÏ´Ó²úÉúµ½³ÉÊìÈ´¾­¹ýÁËÒ»¸öÂþ³¤µÄ¹ý³Ì¡£Linux ´òӡϵͳ×îÔçÔ´ÓÚ UNIX ´òӡϵͳ£¬µ« UNIX ϵͳȴһֱȱ·¦Í³Ò»µÄ±ê×¼½Ó¿Ú¡£ÓÉÓÚÀúÊ·Ô­Òò£¬²»Í¬ UNIX ƽ̨ʹÓÃ×Ų»Í¬µÄ´òӡϵͳ¡£ÔÚ¸÷ÖÖ UNIX ´òÓ¡½â¾ö·½°¸ÖУ¬×îÁ÷ÐеÄÊÇ Berkeley ´òӡϵͳºÍ System V ´òӡϵͳ¡£Ò»·½Ã棬²»Í¬´òӡϵͳÐèÒª²»Ò»ÑùµÄ´òÓ¡Çý¶¯Ö§³Ö£»ÁíÒ»·½Ã棬UNIX Ö»ÓµÓÐÏà¶Ô½ÏСµÄ¿Í»§Èº¡£ÕâЩÒòËØÊ¹µÃºÜ¶à´òÓ¡»ú¹©Ó¦ÉÌÍêÈ«·ÅÆúÁË¶Ô UNIX ƽ̨µÄÖ§³Ö¡£Í³Ò»´òÓ¡½Ó¿ÚµÄȱ·¦ºÍµ×²ãÇý¶¯µÄ²»ÍêÉÆÊ¹´òÓ¡Ôںܳ¤Ò»¶Îʱ¼äÄÚ³ÉΪÁË Linux ƽ̨µÄÒ»´ó¹¦ÄÜ©¶´¡£

¡¡¡¡×îÖÕ CUPS £¨Common UNIX Printing System£©µÄ³öÏÖ½â¾öÁËÉÏÊö¾½¾³¡£CUPS ÊÇUNIX/Linux ÉÏͨÓõĴòӡϵͳ¡£CUPS ÌṩÁËÒ»Ì× CUPS API À´Íê³É UNIX/LinuxϵͳºÍ´òÓ¡»úÖ®¼äµÄ½»»¥¡£ÀýÈ磬Óû§¿ÉÒÔͨ¹ý CUPS »ñÈ¡´òÓ¡»úµÄÐÅÏ¢£¬Ò²¿ÉÒÔͨ¹ý CUPS ÉèÖôòÓ¡»ú¡£CUPS ÌṩÁË¶Ô Berkeley ºÍ System V ´òÓ¡ÃüÁîµÄÖ§³Ö£¬ÕâÖÖ¼æÈÝÐÔʹµÃ֮ǰµÄϵͳ²»ÓýøÐдó¹æÄ£Ð޸ľͿɱ»ÑÓÐøÊ¹Óá£Í¬Ê±£¬CUPS »¹ÌṩһϵÁÐÄ£¿é»¯µÄ¹ýÂ˽ӿڡ£Í¨¹ýÕâЩ½Ó¿Ú£¬´òÓ¡»úÌṩÉÌÖ»ÐèÒª¿ª·¢Ò»¸öÇý¶¯³ÌÐò¾Í¿ÉÒÔÂú×ãËùÓÐÆ½Ì¨µÄÐèÇó¡£ÖÁ½ñΪֹ£¬CUPS Òѱ»ËùÓÐ UNIX ºÍ Linux ƽ̨ËùÖ§³Ö¡£

¡¡¡¡2.´òÓ¡»ú¹ÜÀíÒÆÖ²¼Ü¹¹

¡¡¡¡´òÓ¡»ú¹ÜÀíÒÆÖ²ÊÇÓ¦ÓóÌÐò¿çÆ½Ì¨ÒÆÖ²µÄÖØÒª×é³É²¿·Ö¡£²»Í¬Æ½Ì¨ËùÖ§³ÖµÄ´òÓ¡½Ó¿ÚÊDz»Í¬µÄ£¬Òò´ËÒÆÖ²µÄºËÐľÍÊÇʵÏÖÆ½Ì¨Ö®¼äµÄ´òÓ¡»ú¹ÜÀí½Ó¿ÚµÄת»»¡£ÏÂͼչʾÁË´òÓ¡»ú¹ÜÀíÒÆÖ²µÄ¼Ü¹¹¡£

[align=center]ͼ1 ´òÓ¡»ú¹ÜÀíÒÆÖ²¼Ü¹¹

[/align]

¡¡¡¡Windows ÌṩÁËһϵÁÐ API À´»ñÈ¡´òÓ¡»úÐÅÏ¢¡£ÕâЩÐÅÏ¢±»·â×°ÔÚÔ¤¶¨ÒåµÄWindows ±ê×¼½á¹¹ÖУ¬±ÈÈç DEVMODE£¬PRINTER_INFO_2£¬PRINTER_INFO_4 µÈµÈ¡£Linux ʹÓà CUPS À´»ñÈ¡´òÓ¡»úÐÅÏ¢£¬ÕâЩÐÅÏ¢±»·â×°ÔÚ cups_dest_t£¬ipp_attribute_t µÈÊý¾Ý½á¹¹ÖС£Ö»ÒªÕýÈ·»ñÈ¡ Linux ƽ̨ÉÏ´òÓ¡»úÐÅÏ¢£¬²¢°ÑËüÃÇת»¯³É Windows ´òÓ¡»úÊý¾Ý½á¹¹£¬¾Í¿ÉÒÔÍê³É´òÓ¡»ú¹ÜÀí¡£

¡¡¡¡3.CUPS »ù´¡ÖªÊ¶

¡¡¡¡CUPS ÊÇ UNIX/Linux ƽ̨ÉϵĴòӡϵͳ¡£CUPS µÄ¶¨ÒåºÍʵÏÖÊÇ»ùÓÚ IPP£¨Internet Printing Protocol£©Ð­ÒéµÄ¡£IPP ÊÇͨÓõĴòӡϵͳ±ê×¼£¬ËüµÄ¹¦ÄܺͲÙ×÷±»Ò»ÏµÁÐRFC£¨Request for Comments£©ËùÏêϸ¶¨Òå¡£ÕâЩ¾ßÌ幦ÄܺͲÙ×÷°üÀ¨£º½¨Á¢ IPPÇëÇó£¬Ó¦´ð IPP ÇëÇóºÍÉèÖà IPP ÇëÇóµÈµÈ¡£ºÍ IPP Ïà¹ØµÄ RFC °üÀ¨ RFC1179£¬RFC2910£¬RFC2911£¬RFC3196 µÈµÈ¡£ÔÚÍøÂçЭÒéÖУ¬IPP λÓÚ HTTP£¨Hyper-Text Transport Protocol£©Ð­ÒéÖ®ÉÏ¡£Òò´ËÒÔÏ´úÂëʾÀý½«Éæ¼°µ½ºÜ¶à IPP ºÍ HTTPµÄϵͳµ÷Óã¬ÀýÈç ippAddString() ºÍ httpConnectEncrypt() µÈµÈ¡£´ËÍ⣬ÔÚUNIX/Linux ƽ̨ÉÏÔÚʹÓà CUPS ֮ǰҪÌáǰÒýÈëÏÂÁÐÍ·Îļþ£º

ÒýÓÃ:
#include
#include
#include
#include


¡¡¡¡ÓÐÁËÉÏÊö CUPS »ù´¡ÖªÊ¶£¬ÏÂÎĽ«¾ÙÀý˵Ã÷ʹÓà CUPS ʵÏÖ´òÓ¡»ú¹ÜÀíÒÆÖ²µÄ¼¼Êõϸ½Ú¡£

¡¡¡¡4.»ñÈ¡´òÓ¡»úÊýÁ¿

¡¡¡¡Windows ͨ¹ý API EnumPrinters() µÄ·µ»Ø²ÎÊý pcReturned À´»ñȡϵͳµÄ´òÓ¡»úÊýÁ¿¡£Windows ³ÌÐòµÄ¾ßÌåʵÏÖÈçÏÂËùʾ£º

ÒýÓÃ:
int n_PrinterCount;
EnumPrinters( , , , , , , &n_PrinterCount);


¡¡¡¡ÔÚ Linux ÖУ¬CUPS º¯Êý cupsGetDests() ¿ÉʵÏÖͬÑùµÄ¹¦ÄÜ¡£ÐèҪעÒâµÄÊÇ£¬ÔÚµ÷ÓýáÊøºó£¬µ÷ÓÃÕßÐèҪʹÓà cupsFreeDests() À´ÊÍ·ÅÄÚ´æ¡£

ÒýÓÃ:
cups_dest_t *dests;
int n_PrinterCount = cupsGetDests( &dests );
cupsFreeDests(count, dests);
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 5 ÌõÆÀÂÛ

  1. ÏÄÓê ÓÚ 2006-11-18 16:47:47·¢±í:

    ºÜ²»´í£¬ÓÐЩ¶«Î÷ºÜÉî°Â£¬µÃ»¹ÒªÑ§Ï°

  2. sagacious ÓÚ 2006-11-18 12:25:00·¢±í:

    ²»´í,ºÜºÃµÄÌù×Ó.

  3. veryfan ÓÚ 2006-11-18 11:01:48·¢±í:

    ¡¡¡¡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 ƽ̨ÉϵÄÒÆÖ²Ï¸½Ú¡£±¾ÕÂÉæ¼°µÄÒÆÖ²¼Ü¹¹ºÍÒÆÖ²¸ÅÄî²»½ö½ö¾ÖÏÞÓÚ´òÓ¡»ú¹ÜÀíÒÆÖ²¡£ÕâЩ¸ÅÄîºÍ˼ÏëÒ²ÊÇËùÓÐÓ¦ÓóÌÐòËùͨÓõġ£Ó¦ÓóÌÐò¿çÆ½Ì¨ÒÆÖ²ÒѾ­ÔںܶàÈí¼þÖб»Ó¦Óá£ÊµÏÖÓ¦ÓóÌÐòÔÚ²»Í¬Æ½Ì¨ÉÏÎÞ·ì϶µÄÔËÐвÙ×÷Ò²½«ÊÇÃ¿Î»ÒÆÖ²¼¼ÊõÈËÔ±µÄ¹²Í¬Ä¿±ê¡£

  4. veryfan ÓÚ 2006-11-18 11:00:24·¢±í:

    ¡¡¡¡5.3ÉèÖà IPP ÇëÇó

    ¡¡¡¡ÒÔÏÂÊǽøÒ»²½ÉèÖõ±Ç° IPP ÇëÇó pIPPReq µÄϸ½Ú¡£ÐèÒªÖ¸³öµÄÊÇ£¬ÔÚºÍ CUPS ·þÎñÆ÷½øÐн»»¥µÄ¹ý³ÌÖУ¬ºÜ¶àÐÅÏ¢ÊÇͨ¹ý×Ö·û´®À´´«µÝµÄ¡£Õâ¾ÍÉæ¼°µ½ÁËÎÄ×ÖÓïÑÔ±àÂë±íʾµÄÎÊÌâ¡£º¯Êý cupsLangDefault() ¾ÍÊÇÓÃÀ´»ñÈ¡ CUPS ·þÎñÆ÷µÄĬÈÏÓïÑÔÉèÖá£cupsLangDefault() µÄ·µ»ØÖµ pDefLang »¹½«×÷Ϊ²ÎÊý´«µÝ¸øÆäËüº¯ÊýÀ´Íê³É¶Ô IPP ÇëÇóµÄ½øÒ»²½ÉèÖá£

    ¡¡¡¡¸ù¾Ý IPP ЭÒ飬¶Ô IPP ÇëÇóµÄÉèÖÃÒª´ÓÉèÖòÎÊý "attributes-charset"£¨×Ö·û¼¯£©ºÍ"attributes-natural-language"£¨×ÔÈ»ÓïÑÔ£©¿ªÊ¼¡£ÏÂÁдúÂë·Ö±ðÓÃϵͳĬÈÏ×Ö·û¼¯ºÍCUPS ĬÈÏÓïÑÔÀ´ÉèÖÃÕâÁ½¸ö²ÎÊý¡£Íê³ÉÕâÁ½Ïî¹æ¶¨ÉèÖúó£¬Óû§¾Í¿ÉÒÔ¸ù¾ÝÐèÇó¶ÔÐèÒªµÄÐÅÏ¢Ìá³öÇëÇó¡£´Ë´¦ÐèÒª»ñµÃµÄÐÅÏ¢ÊÇ´òÓ¡»úÃû³Æ£¬¶Ë¿ÚºÅºÍ´òÓ¡»úÐͺš£ÔÚ IPP ЭÒéÖУ¬ÕâÈýÏî¶ÔÓ¦µÄIPPÇëÇ󹨼ü×Ö·Ö±ðÊÇ "printer-name", "device-uri" ºÍ "printer-make-and-model"¡£ÏÂÁдúÂ붨ÒåÁËÊý×é pReqAttrs À´´æ´¢ÉÏÊö¹Ø¼ü×Ö£¬È»ºóͨ¹ýÇëÇó²ÎÊý "requested-attributes" À´ÉèÖÃÕâЩ IPP ÇëÇó¡£

    ÒýÓÃ:
    cups_lang_t *pDefLang = cupsLangDefault();
    if (!pDefLang)
    {
    g_print("Cannot get default language\n");
    return 0;
    }
    ippAddString(pIPPReq,
    IPP_TAG_OPERATION,
    IPP_TAG_CHARSET,
    "attributes-charset",
    NULL,
    cupsLangEncoding(pDefLang));
    ippAddString(pIPPReq,
    IPP_TAG_OPERATION,
    IPP_TAG_LANGUAGE,
    "attributes-natural-language",
    NULL,
    pDefLang->language);
    static const char *pReqAttrs[] = {"printer-name", "device-uri",
    "printer-make-and-model"};
    ippAddStrings(pIPPReq,
    IPP_TAG_OPERATION,
    IPP_TAG_KEYWORD,
    "requested-attributes",
    3,
    NULL,
    pReqAttrs);


    ¡¡¡¡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. veryfan ÓÚ 2006-11-18 10:59:17·¢±í:

    ¡¡¡¡5.»ñÈ¡´òÓ¡»úÃû³Æ£¬´òÓ¡»ú¶Ë¿ÚºÍ´òÓ¡»úÐͺÅ

    ¡¡¡¡WindowsʹÓÃAPI EnumPrinters() À´»ñÈ¡´òÓ¡»úÃû³Æ£¬´òÓ¡»ú¶Ë¿ÚºÍ´òÓ¡»úÐͺš£ÏêÇéÇë²Î¿¼Windows MSDN¡£ÔÚLinuxƽ̨ÉÏ£¬CUPS¿ÉʵÏÖͬÑùµÄ¹¦ÄÜ¡£¾ßÌåʵÏÖÁ÷³ÌÈçÏÂͼËùʾ£º

    [align=center]ͼ2 »ñÈ¡´òÓ¡»úÐÅÏ¢£¨Ãû³Æ£¬¶Ë¿Ú£¬Ðͺţ©Á÷³Ì

    [/align]

    ¡¡¡¡5.1½¨Á¢ HTTP Á¬½Ó

    ¡¡¡¡Ê¹Óà CUPS »ñÈ¡´òÓ¡»úÃû³Æ£¬´òÓ¡»ú¶Ë¿ÚºÍ´òÓ¡»úÐͺÅÐÅÏ¢Ê×ÏÈÐèÒª¿ªÆô IPP ºÍHTTP ·þÎñ¡£¿ªÆô·þÎñµÄµÚÒ»²½Êǽ¨Á¢Ò»¸ö HTTP Á¬½ÓÀ´ºÍ CUPS ·þÎñÆ÷È¡µÃÁªÏµ¡£ÔÚÏÂÃæµÄ´úÂëÖУ¬cupsServer() ½«·µ»ØÖ¸ÏòĬÈÏ CUPS ·þÎñÆ÷Ãû³ÆµÄÖ¸Õ룻ippPort() ½«·µ»Ø IPP ÇëÇóµÄĬÈ϶˿ںţ»cupsEncryption() ½«·µ»Øµ±Ç° CUPS ÇëÇóµÄĬÈϼÓÃÜÉèÖ᣽«ÕâЩ·µ»ØÖµ×÷Ϊ²ÎÊý´«µÝ¸øº¯Êý httpConnectEncrypt() ¾Í¿ÉÒÔ½¨Á¢Ò»¸ö HTTP Á¬½Ó¡£Èç¹û HTTP Á¬½Ó½¨Á¢³É¹¦£¬¼´ httpConnectEncrypt() µÄ·µ»ØÖµpHTTPConnection ÓÐЧ£¬ÄÇô¾Í¿ÉÒÔ»ùÓÚÕâ¸öÁ¬½Ó½øÐÐÏÂÒ»²½ IPP ÇëÇó¡£

    ÒýÓÃ:
    http_t *pHTTPConnection = httpConnectEncrypt( cupsServer(),
    ippPort(),
    cupsEncryption() );
    if (!pHTTPConnection)
    {
    g_print("Cannot connect to CUPS server\n");
    return 0;
    }


    ¡¡¡¡5.2½¨Á¢ IPP ÇëÇó

    ¡¡¡¡½¨Á¢Ò»¸öÐ嵀 IPP ÇëÇóÊÇͨ¹ý IPP µ÷Óà ippNew() À´ÊµÏֵġ£ÔÚ´Ë£¬operation_id ±»ÉèÖÃΪ CUPS_GET_PRINTERS£¬ÆäÓïÒåÊǵ±Ç° IPP ÇëÇóÒª»ñÈ¡ºÍ´òÓ¡»úÏà¹ØµÄÐÅÏ¢¡£Í¬Ê±£¬request_id ±»ÉèÖÃΪ 1£¬ÕâÊÇ IPP ЭÒéËù¹æ¶¨µÄ¡£

    ÒýÓÃ:
    ipp_t *pIPPReq = ippNew();
    pIPPReq->request.op.operation_id = CUPS_GET_PRINTERS;
    pIPPReq->request.op.request_id = 1;