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

Linux²Ù×÷ϵͳϵÄÀëÏßä¯ÀÀÆ÷½éÉÜ

·¢²¼Ê±¼ä:2006-11-03 10:27:19À´Ô´:ºìÁª×÷Õß:xcoolo
¡¡¡¡±¾ÎĽ«½éÉÜÈçºÎʵÏÖÒ»¸öÀëÏßä¯ÀÀÆ÷£¬ÒÔÏÂÔØ²¢ä¯ÀÀÍøÉÏ×ÊÔ´¡£

¡¡¡¡¾µÏñĿ¼½á¹¹

¡¡¡¡ÀëÏßä¯ÀÀÏÂÔØµ½±¾µØµÄÍøÒ³Ê±£¬ÐèÒª½â¾öµÄÒ»¸ö¹Ø¼üÐÔÎÊÌâ¾ÍÊÇ¡°ÈçºÎͨ¹ýÄ³Ò»ÍøÒ³Öеij¬¼¶Á´½ÓÕýÈ·µØ¶¨Î»ÆäËûÍøÒ³¡±¡£±È½Ï¼ò±ãµÄ·½·¨ÊÇÔÚÓû§Ö¸¶¨µÄ±¾µØÄ¿Â¼Ï½¨Á¢Ò»¸öÄ¿±êÍøÕ¾µÄÍêÕû»ò²¿·Ö¾µÏñ¡£Ò²¾ÍÊǰ´ÕÕÎļþÔÚ·þÎñÆ÷¶ËµÄĿ¼½á¹¹±£´æÏÂÔØµÄÎļþ(²Î¼ûÏÂͼ)¡£ÕâÑùÒ»À´£¬Èç¹ûÍøÒ³Öеij¬¼¶Á´½ÓÊÇÒÔÏà¶Ô·¾¶ÐÎʽ¸ø³öµÄ£¬ÄÇôä¯ÀÀ³ÌÐò¾Í¿ÉÒÔÖ±½Óͨ¹ý´ËÏà¶Ô·¾¶·ÃÎʵ½±¾µØÎļþϵͳÖеÄÍøÒ³£»Èç¹ûÍøÒ³Öеij¬¼¶Á´½ÓÊÇÒÔ¾ø¶ÔµÄURLÐÎʽ¸ø³öµÄ£¬ÄÇô±ØÐëÔÚ±£´æÍøÒ³Ö®Ç°½«ÕâЩURLת»»Îª±¾µØ¾ø¶Ô·¾¶¡£

¡¡¡¡ÔÚÍøÂçÖУ¬Ò»¸öÓÐЧµÄURLÓ¦¸ÃÖ»ÓÐΨһµÄÍøÂçÎļþÓëÖ®¶ÔÓ¦¡£Òò´Ë£¬Ö»Òª½«ÍøÂçÉÏÓÉURLËùÈ·¶¨µÄ²ã´Î¹ØÏµ£¬×ª»¯Îª±¾µØÎļþϵͳÖÐÓÉĿ¼·¾¶ËùÈ·¶¨µÄ²ã´Î¹ØÏµ£¬¾Í¿ÉÒÔ½¨Á¢ÍøÕ¾ÔÚ±¾µØµÄÍêÈ«»ò²¿·Ö¾µÏñ¡£ÏÂÃæÌÖÂÛ½¨Á¢¾µÏñµÄ¾ßÌå·½·¨¡£

¡¡¡¡¾µÏñ·¾¶Ëã·¨

¡¡¡¡Ê×ÏÈ£¬½«ÏÂÔØÍøÒ³Ê±Éú³ÉµÄURL²ð·Ö³ÉЭÒéÀàÃû£¨protocol£©¡¢IPµØÖ·(ipaddr)¡¢Ä¿Â¼Ãû£¨directory£©ºÍÎļþÃû£¨file£©¡£

¡¡¡¡KDE»·¾³ÌṩÁËÒ»¸öÓÃÓÚ½âÎöURLµÄÀàKURL£¬Ö»ÐèÒª¶¨ÒåÒ»¸ö¶ÔÏóKURL u((const char*)URL)£¬¾Í¿ÉÒÔÀûÓøÃÀàÌṩµÄ³ÉÔ±º¯Êý½«URL²ð½âΪËùÐèµÄ²¿·Ö¡£µ«ÊÇ£¬´ËÀàδÌṩ¶ÔASP¶¨Î»Óï¾äµÄÖ§³Ö£¬ËùÒÔ¶ÁÕß¿ÉÒÔÔÚKURLµÄ»ù´¡Éϱàд×Ô¼ºµÄ²ð½âº¯Êý£¬ÒÔÍêÉÆ³ÌÐò¹¦ÄÜ¡£

¡¡¡¡ÐèҪעÒâµÄÊÇ£¬ÔÚÍ¬Ò»ÍøÂçÎļþµÄURLÖУ¬ÍøÖ·²¿·Ö¿ÉÄÜÊÇÒÔÓòÃûµØÖ·ÐÎʽ¸ø³öµÄ£¬Ò²¿ÉÄÜÊÇÒÔIP µØÖ·ÐÎʽ¸ø³öµÄ¡£ÎªÁ˱ÜÃ⽫ͬһÎļþ¾µÏñµ½²»Í¬Ä¿Â¼Ï£¬Èç¹ûÍøÖ·ÊÇÓòÃûÐÎʽµÄ£¬Ó¦¸ÃʹÓÃsocketº¯Êýgethostbyname ()½«Æäת»»ÎªIPµØÖ·¡£

¡¡¡¡Æä´Î£¬È·¶¨ÍøÂçÎļþÔÚ±¾µØµÄ¾µÏñ·¾¶¡£¼ÙÉèÓû§Ö¸¶¨µÄ±¾µØÄ¿Â¼´æ·ÅÔÚ×Ö·ûÊý×éLDirÖУ¬Ôò´úÂëÈçÏ£º

ÒýÓÃ:
QString LocalDir = LDir + ¡°/¡± + protocol + ¡°_¡± + ipaddr + directory;

QString LocalPath = LocalDir + file;


¡¡¡¡ÕâÑùÒ»À´£¬Èç¹ûÒ»¸öÍøÂçÎļþµÄURLÊÇhttp://11.171.38.32/webfile/relax/index.html£¬¶øÓû§Ö¸¶¨µÄ±¾µØÄ¿Â¼ÊÇ/home/yangjx/web£¬Ôò´ËÍøÒ³Îļþ¶ÔÓ¦µÄ¾µÏñ·¾¶Îª/home/yangjx/web/http_11.171.38.32/webfile/relax/index.html¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 3 ÌõÆÀÂÛ

  1. ½£soho ÓÚ 2006-11-03 11:00:39·¢±í:

    ºÃ£¬Ñ§Ï°ÁË
    ²»¹ýºÃ¶à¶¼»¹²»¶®£¬Å¬Á¦ingѽ

  2. xcoolo ÓÚ 2006-11-03 10:29:10·¢±í:

    ¡¡¡¡2.ÏìÓ¦³¬¼¶Á´½ÓµÄµã»÷

    ¡¡¡¡¶¨ÒåÊó±êʼþ´¦Àíº¯ÊýmousePressedHook()¸²¸ÇKHTMLViewÀàÖеÄͬÐÍÐéÄ⺯Êý¡£µ±Óû§ÓÃÊó±êµã»÷ÍøÒ³Öеij¬¼¶Á´½Óʱ£¬¸Ãº¯Êý½«±»µ÷Óᣱ»µã»÷µÄ³¬¼¶Á´½ÓµÄµØÖ·»á×÷Ϊ²ÎÊý×Ô¶¯´«Èë¸Ãº¯Êý¡£ÓÉÓÚÍøÒ³ÎļþÖеÄËùÓг¬¼¶Á´½ÓÒÑ×ö¹ý±¾µØ¾µÏñ´¦Àí£¬ËùÒÔ£¬Ö»Òª¸ÃÁ´½ÓËùÖ¸ÏòµÄÎļþÒѾ­±»ÏÂÔØ³ÌÐòÕýÈ·µØÏÂÔØµ½±¾µØ£¬ÄÇôʹÓÃshowPageº¯Êý¾ÍÄܵ÷Èë²¢ÏÔʾ´ËÒ³¡£

    ÒýÓÃ:
    bool CHtmlView:: mousePressedHook
    ( const char* _url, const char *_target,
    QMouseEvent *_ev, bool _isselected )

    {

    KHTMLView:: mousePressedHook(_url£¬_target£¬_ev£¬_isselected);

    //ÏÔʾ±»µã»÷µÄÒ³Ãæ

    showPage(_url);

    return true;

    }


    ¡¡¡¡ÔÚÉú³ÉKdevelopµÄ´°¿ÚÓ¦ÓóÌÐò¿ò¼ÜµÄViewÀàÖж¨ÒåÒ»¸öChtmlView¶ÔÏó,½«ViewÀà×÷ΪÆä¸¸´°¿Ú£º

    ÒýÓÃ:
    ChtmlView *m_htmlview £½ new ChtmlView(this,¡°HtmlViewer¡±);

    /*µ÷ÓÃshowPageº¯ÊýÏÔʾpathÖ¸ÏòµÄÍøÒ³Îļþ*/

    m_htmlview-> showPage(path);


    ¡¡¡¡´ËÍ⣬ÎÒÃÇ»¹¿ÉÒÔÔÚ´Ë»ù´¡ÉϼÓÈë¸ü¶àµÄ¹¦ÄÜ£¬ÒÀ¿¿KDevelopËùÌṩµÄ·á¸»µÄͼÐÎÓû§½Ó¿ÚÀཫä¯ÀÀÆ÷Éè¼ÆµÃ¸üÃÀ¹ÛÒ×Óá£

  3. xcoolo ÓÚ 2006-11-03 10:28:28·¢±í:

    ¡¡¡¡´¦ÀíÏÂÔØÎļþ

    ¡¡¡¡ÓÐÁ˾µÏñ·¾¶Éú³ÉËã·¨£¬½ÓÏÂÀ´Òª¶ÔÏÂÔØµÄÎļþ×öÈçÏ´¦Àí£º

    ¡¡¡¡¡ñ Èç¹ûÊÇÍøÒ³Îļþ£¬±ØÐëɨÃèÎļþ£¬²¢½«ÆäÖÐÒÔ¾ø¶ÔURLÐÎʽ¸ø³öµÄ³¬¼¶Á´½ÓÌæ»»³ÉÓþµÏñ·¾¶Éú³ÉËã·¨²úÉúµÄ±¾µØ¾ø¶Ô·¾¶£¬¶øÄÇЩÒÔÏà¶Ô·¾¶ÐÎʽ¸ø³öµÄ³¬¼¶Á´½ÓÔò±£³Ö²»±ä£»

    ¡¡¡¡¡ñ ½¨Á¢ÏàÓ¦µÄĿ¼£¬²¢±£´æÎļþµ½¾ø¶Ô·¾¶ËùÖ¸¶¨µÄλÖá£

    ¡¡¡¡ÔÚ½¨Á¢Ä¿Â¼Ê±£¬ÓÉÓÚLinuxÌṩµÄĿ¼´´½¨º¯Êýint mkdir(char * dir, int mode)Ö»ÄÜÔÚÒÑ´æÔÚµÄĿ¼Ï½¨Á¢Ò»¼¶×ÓĿ¼£¬ËùÒÔÒªÓᰵݹ顱·½Ê½¹¹ÔìÒ»¸öĿ¼´´½¨º¯Êý£º

    ÒýÓÃ:
    static int CDirTools:: Mkdir(QString dir£¬int mode)

    {

    QString parentdir;

    ¡¡if(dir.isEmpty())

    //Èç¹ûdirΪ¿Õ´®·µ»ØÊ§°Ü

    return -1;

    ¡¡int result = mkdir(dir£¬mode);

    ¡¡if(result == -1 && errno == EEXIST) //Èç¹ûdirĿ¼ÒѾ­´æÔÚ£¬Ôò·µ»Ø1

    return 1;

    ¡¡if(result != -1)

    //Èç¹û½¨Á¢³É¹¦£¬Ôò·µ»Ø0

    ¡¡¡¡return 0;

    ¡¡else

    ¡¡{//·ñÔòÏÈ´´½¨Æä¸¸Ä¿Â¼

    ¡¡¡¡KURL u((const char *)dir);

    //È¡µÃdirµÄ¸¸Ä¿Â¼¡¡¡¡

    parentdir = url.directory(false);

    ¡¡¡¡if(Mkdir(parentdir) == -1)

    //Èç¹û¸¸Ä¿Â¼´´½¨Ê§°Ü£¬Ôò·µ»Ø-1£»·ñÔòÔٴδ´½¨±¾Ä¿Â¼

    ¡¡¡¡¡¡return -1;

    ¡¡¡¡if(mkdir(dir£¬mode) == -1)

    //Èç¹û±¾Ä¿Â¼´´½¨Ê§°Ü£¬Ôò·µ»Ø-1

    ¡¡¡¡return -1;

    ¡¡}

    }


    ¡¡¡¡±à³ÌʵÏÖ

    ¡¡¡¡Linux²Ù×÷ϵͳµÄ×ÀÃæ»·¾³KDEÌṩÁËÒ»¸öÎļþ¹ÜÀíÆ÷KFM£¬ËüºÍIEÒ»Ñù¼È¿ÉÒÔä¯ÀÀ±¾µØÄ¿Â¼ºÍÎļþ£¬Ò²¿ÉÒÔä¯ÀÀÍøÒ³£¬²¢ÇÒKFM»¹ÌṩÁËC++±à³Ì½Ó¿Ú: KHTMLViewÀà¡£ÎÒÃÇ¿ÉÒÔ´´½¨Ò»¸öKHTMLViewÀàµÄ×ÓÀàCHtmlViewÀ´ä¯ÀÀÏÂÔØµÄÍøÒ³Îļþ¡£

    ¡¡¡¡1.ÔÚ´°¿ÚÖÐÏÔʾHTMLÒ³Ãæ

    ÒýÓÃ:
    int CHtmlView:: showPage(const char * path)

    { //ÏÔʾpathÖ¸¶¨µÄÎļþÖÐËù°üº¬µÄHTMLÒ³Ãæ

    ¡¡if(path == NULL)

    ¡¡¡¡return -1;

    ¡¡else

    ¡¡{

    ¡¡¡¡FILE * pfile;

    //´ò¿ª°üº¬Ò³ÃæµÄÎļþ

    ¡¡¡¡if((pfile = fopen((const char*)path,¡°rb¡±)) != NULL)

    ¡¡¡¡{

    ¡¡¡¡ int blocklen = 0x10000;

    ¡¡¡¡ char * c = new char[blocklen+1];

    ¡¡¡¡ KURL u((const char*)path);

    //Àà³ÉÔ±º¯Êý£¬Çå³ý´°¿ÚÄÚÔ­ÓÐÄÚÈÝ£¬²¢³õʼ»¯´°¿Ú£¬×¼±¸ÏÔʾÐÂÒ³Ãæ

    ¡¡ begin( u.directoryURL() );

    ¡¡¡¡ while(1)

    ¡¡¡¡ {

    //¶Á³öÍøÒ³ÎļþµÄÄÚÈÝ

    ¡¡¡¡ int len = fread(c£¬sizeof(char),blocklen£¬pfile);

    //Àà³ÉÔ±º¯Êý£¬½«¶ÁÈ¡µÄÄÚÈÝдÈëKHTMLViewÀàµÄ»º³åÇø

    write(c);

    //Îļþ¶ÁÈ¡Íê±ÏºóÍ˳öÑ­»·

    if(len < blocklen)

    ¡¡¡¡ break;

    ¡¡¡¡ }

    //Àà³ÉÔ±º¯Êý£¬±êʾHTMLÒ³ÃæÒѾ­È«²¿Ð´È뻺³åÇø

    ¡¡¡¡ end();

    //Àà³ÉÔ±º¯Êý£¬·ÖÎö»º³åÇøÖеÄHTML´úÂë

    ¡¡¡¡ parse();

    //Àà³ÉÔ±º¯Êý£¬ÏÔʾHTMLÒ³Ãæ

    ¡¡¡¡ show();

    ¡¡¡¡ delete [] c;

    ¡¡¡¡}

    ¡¡¡¡else return -1;

    }

    return 0;

    }