青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

大漠落日

while(!dead) study++;
posts - 46, comments - 126, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

判斷URL是否合法C++代碼

Posted on 2010-01-08 19:05 亂78糟 閱讀(7314) 評論(3)  編輯 收藏 引用 所屬分類: C語言派系
首先聲明四點:
  • 本代碼是我在MFC中寫的,用到了很多MFC種的類,如果要移植到其他開發環境,請自行修改。
  • 因為實際具體要求,所有很多地方可能與大家使用的不同,原理代碼貼出來,修改就簡單了^_^。
  • 本代碼僅僅是一個弱檢查,如果有大牛寫出了C/C++的正則式判斷代碼,請一定要給我郵一份,感激涕零。
  • 轉載請注明出處,也就是本隨筆地址啦。

原理:

URL是否合法的依據是RFC2369,可以點擊這里查看RFC2369

本段代碼的原理很簡單,舉一個URL為例:http://xxx.xxx.xx/ffd?=dd22,如何判斷是否合法?
如果你用過MFC中AfxParseUrl這個函數,我相信你馬上就能明白90%,剩下的10%我后面再講,首先看下這個函數原型。

BOOL AFXAPI AfxParseURL(
   LPCTSTR pstrURL,
//待解析的URL,http://xxx.xxx.xx/ffd?=dd22
   DWORD& dwServiceType,//解析出來的服務類型,例如http,ftp之類的,上面例子出來為1(AFX_INET_SERVICE_HTTP)
   CString& strServer,//上面例子中的xxx.xxx.xx
   CString& strObject,//上面例子中的/ffd?=dd22
   INTERNET_PORT& nPort//端口
);

這個函數解析成功返回true,否則false。當然,即便它返回true也不代表這個URL就是合法的,為什么呢?看這個例子:http://xxx/dd.html。所以重點變成了判斷strServer這個參數是否合法,也就是我上面所說的10%了。

服務器域名有很多子域名,例如asd.page1.cppblog.com、ddd.sina.com.cn。棄繁從簡,倒過來,如果找到多個.分開的字段,并且最后一個域名是正確的,就是正確的URL格式。有個例外,那就是純IP,例如http://192.168.3.124/index.html。
OK,原理完了,上代碼。

代碼:

//校驗URL是否合法文件路徑,依據為rfc2396
//這個函數只做粗略的校驗,不完全符合RFC2369
//僅支持IPV4
BOOL CAddDlg::CheckURL(const CString &szUrl, CString &szMsg)
{
    DWORD dwService 
= 0;
    DWORD dwValid 
= AFX_INET_SERVICE_FTP|AFX_INET_SERVICE_HTTP|AFX_INET_SERVICE_HTTPS|AFX_INET_SERVICE_FILE;
    CString strServer;  
    CString strObject;  
    INTERNET_PORT port; 

    BOOL bValid 
= AfxParseURL(szUrl, dwService, strServer, strObject, port);  
    
if ( !bValid || strObject.IsEmpty() || strObject == "/" || strServer == "localhost"
        )
    { 
        szMsg 
= szUrl + " \n不是一個合法的下載地址URL";
        
return FALSE;  
    }
    
else//開始檢驗解析出來的部分
    {
        
if ( (dwService & dwValid) == 0 )
        {
            szMsg 
=  szUrl + "\n不支持的服務類型,目前僅支持http,https,ftp,file";
            
return FALSE;
        }
        
if ( (dwService & AFX_INET_SERVICE_FILE) != 0 )//file協議直接返回TRUE
        {
            
return TRUE;
        }

        CStringArray arr;
        CString dom;
        
int i, size = 0;
    
        ExtractString(arr, strServer, 
".");
        size 
= arr.GetCount();
        
if ( size == 0 )
            
return TRUE;
        dom 
= arr.GetAt( size-1 );

        
for ( i = 0; i < size; i++)
        {
            
if ( IsGb2312(arr.GetAt(i)) )
            {
                szMsg 
= szUrl + " \n不支持包含中文的域名";
                
return FALSE;
            }
        }

        
//先看下是不是192.168.3.2這種IP形式的地址
        if ( IsNumber(dom) )
        {
            
bool bt = true;
            
if ( size == 4 )
            {
                
for ( i = 0; i < size; i++ )
                {
                    UINT32 num 
= CString2UINT32(dom);
                    
if (num < 0 && num > 255)
                    {
                        bt 
= false;
                        
continue;
                    }
                }
                
if ( bt )
                    
return TRUE;
            }
        }
        
else if (size > 1)//查一下域名表
        {
            
for (i = 0; i < DOMAIN_NUM; i++)
            {
                
if (dom == szDomainTable[i])
                    
return TRUE;
            }
        }
        szMsg 
= szUrl + " \n不是一個合法的下載地址URL";
        
return FALSE;
    }
    
return TRUE;
}

上面代碼中用到的幾個函數如ExtractString、IsGb2312都很簡單,為不增加代碼長度影響閱讀,故不再貼出。
szDomainTable是我定義的一個域名數組,可以點擊這里下載domain.h

PS:

本來想找個現成的,可網上搜了好長時間,無果。后來一大牛給我發了個JAVA的正則式判斷代碼,,不懂JAVA的c++er飄過~~~~~

Feedback

# re: 判斷URL是否合法C++代碼[未登錄]  回復  更多評論   

2010-01-09 18:56 by C++
招聘:C++程序員

職位描述:

1、技術人員職位,在上級的領導和監督下定期完成量化的工作要求;
2、參與公司軟件項目平臺程序的設計和開發
3、根據開發進度和任務分配,完成平臺相應模塊的設計、開發、編程任務;
4、進行程序單元、功能的測試,查出軟件存在的缺陷并保證其質量;

要求:

1、熟悉Windows C++/MFC編程;
2、熟悉一種大型關系型數據庫如Sql Server或Oracle的應用。
3、掌握TCP/IP、多線程開發等;
4、遵守職業道德,嚴守工作紀律,勤于鉆研,勇于進取,具有良好的團隊合作精神;
5、兩年以上軟件開發經驗;
熟悉休閑、棋牌類游戲開發經驗者優先。
6、注意:待遇是根據能力浮動面議詳談。

應屆畢業生或無相關經驗者,請勿擾,謝謝!

工作地點:廣東湛江

備注:為了提高您的面試機會,請不要直接在網上應聘,請把簡歷發送至linhang518@163.com,謝謝!

# re: 判斷URL是否合法C++代碼  回復  更多評論   

2010-04-28 16:23 by Bronco
感覺用正則會更簡單方便一點~~

# re: 判斷URL是否合法C++代碼  回復  更多評論   

2010-10-26 14:09 by http://m.shnenglu.com/cyin8/
好東西,支持。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜一区| 国产精品亚洲激情| 亚洲欧美在线一区| 中文精品一区二区三区| 日韩视频在线播放| 亚洲深爱激情| 欧美一区二区三区视频在线观看| 亚洲欧美日韩精品久久久| 午夜在线电影亚洲一区| 久久伊人免费视频| 欧美美女bb生活片| 国产亚洲一区二区三区在线观看| 国产主播精品在线| 亚洲三级毛片| 欧美日韩久久精品| 国产欧美日韩精品专区| 欧美一二三区在线观看| 久久久伊人欧美| 欧美日韩精品一区二区| 国产区二精品视| 91久久精品国产| 亚洲在线中文字幕| 欧美成人免费小视频| 一区二区三区日韩欧美| 久久综合狠狠综合久久综合88 | 久久九九99视频| 欧美国产视频在线| 国产亚洲福利一区| 在线亚洲欧美专区二区| 麻豆91精品| 亚洲欧美日韩精品综合在线观看| 麻豆9191精品国产| 国产欧美日韩另类视频免费观看| 亚洲黄色在线观看| 久久久青草婷婷精品综合日韩| 91久久精品日日躁夜夜躁国产| 亚洲一区二区少妇| 欧美激情亚洲激情| 在线精品高清中文字幕| 性做久久久久久| 一区二区欧美视频| 欧美日韩999| 亚洲国产网站| 欧美a一区二区| 久久精品一区二区三区不卡| 国产精品久久久久一区二区三区 | 在线视频观看日韩| 久久久午夜电影| 亚洲欧美成人一区二区在线电影| 欧美人成在线视频| 99国产精品久久久久久久久久| 蜜臀久久99精品久久久久久9| 先锋亚洲精品| 国产视频在线观看一区| 午夜精品理论片| 一区二区欧美日韩| 欧美午夜精品| 亚洲女性喷水在线观看一区| 亚洲娇小video精品| 欧美国产精品v| 亚洲日本免费电影| 亚洲欧洲综合| 欧美日韩国产色综合一二三四| 亚洲免费成人av电影| 亚洲第一免费播放区| 欧美大片网址| 亚洲先锋成人| 亚洲欧美日韩视频一区| 国产农村妇女精品一二区| 欧美一区二区三区免费观看| 午夜国产欧美理论在线播放| 国内精品亚洲| 亚洲第一在线| 中文高清一区| 国产精品男女猛烈高潮激情 | 午夜精品一区二区三区在线视 | 亚洲午夜视频| 亚洲欧美日韩一区二区| 国产真实久久| 欧美激情综合色| 欧美日产国产成人免费图片| 亚洲视频一区在线观看| 亚洲在线中文字幕| 在线观看一区欧美| 亚洲精品看片| 国产日本欧美在线观看| 欧美电影在线观看完整版| 欧美日韩一区二区在线播放| 久久黄色网页| 欧美欧美全黄| 久久永久免费| 欧美久久成人| 久久亚洲综合色| 欧美日韩视频一区二区三区| 久久精品亚洲乱码伦伦中文 | 国产视频欧美视频| 欧美激情va永久在线播放| 欧美午夜在线观看| 狼狼综合久久久久综合网| 欧美日韩裸体免费视频| 狼人天天伊人久久| 国产精品毛片在线| 亚洲国产综合在线看不卡| 国产日韩成人精品| 亚洲精品国产精品乱码不99按摩 | 在线成人av网站| 在线一区二区三区四区| 亚洲国产精品成人综合色在线婷婷| 亚洲毛片在线免费观看| 在线观看一区二区精品视频| 亚洲在线中文字幕| 中文久久精品| 欧美高潮视频| 欧美成人精品在线播放| 国产午夜精品久久久| 一级成人国产| 99re视频这里只有精品| 久久夜色精品| 久久婷婷综合激情| 国产欧美日韩免费| 亚洲一区二区三区精品视频| 一本色道久久88综合亚洲精品ⅰ| 久久亚洲精品一区二区| 久久久久久网站| 国产亚洲午夜| 性欧美超级视频| 久久久久国产成人精品亚洲午夜| 国产精品萝li| 亚洲一级黄色片| 国产一区二区三区电影在线观看| 日韩午夜三级在线| 亚洲午夜三级在线| 欧美性色aⅴ视频一区日韩精品| 亚洲欧洲精品一区二区精品久久久| 在线免费精品视频| 美女日韩在线中文字幕| 欧美成人在线免费视频| 亚洲第一区色| 欧美ed2k| 亚洲精品一区中文| 亚洲一区久久久| 国产精品看片你懂得| 亚洲一区在线观看视频| 久久激情视频| 在线播放日韩专区| 欧美好骚综合网| 99国产精品久久久久久久久久| 亚洲深爱激情| 国产三区精品| 久久综合九色欧美综合狠狠| 亚洲成人在线视频播放| 99在线热播精品免费| 国产精品久久激情| 欧美一区二区三区的| 欧美成人在线免费观看| 99视频在线观看一区三区| 欧美午夜视频网站| 久久成人av少妇免费| 亚洲第一综合天堂另类专| 一本色道久久综合亚洲精品婷婷| 欧美色中文字幕| 午夜精品一区二区三区四区| 麻豆精品在线观看| 亚洲性感美女99在线| 国产一区二区三区日韩| 欧美精彩视频一区二区三区| 一二三区精品| 老色鬼久久亚洲一区二区| 日韩午夜免费| 国产在线精品自拍| 欧美日韩黄色大片| 欧美亚洲在线播放| 亚洲精品专区| 蜜臀av性久久久久蜜臀aⅴ四虎| 一本久久a久久免费精品不卡| 国产午夜精品一区理论片飘花| 欧美刺激午夜性久久久久久久| 亚洲一区二区在线播放| 欧美+日本+国产+在线a∨观看| 在线亚洲免费视频| 永久久久久久| 国产精品视频久久一区| 欧美91福利在线观看| 亚洲欧美一区二区激情| 亚洲电影免费观看高清完整版在线观看 | 国产精品老女人精品视频| 久久久久欧美| 午夜亚洲一区| 一级成人国产| 91久久久久久久久久久久久| 久久精品一区| 香蕉成人久久| 中日韩高清电影网| 亚洲国产欧美日韩精品| 国产一区二区三区黄视频| 亚洲一区在线视频| 亚洲精品中文字幕在线| 亚洲第一视频| 乱人伦精品视频在线观看| 久久er99精品|