freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

代理服務器測試程序的設計與實現(xiàn)—計算機畢業(yè)設計-在線瀏覽

2025-02-01 05:46本頁面
  

【正文】 . 簡單的代理驗證設置。使用這些軟件也確實給 SuperProxy (極速代理 )的設計與開發(fā)帶來了很大的幫助。 SuperProxy 是決定要做成基于對話框的應用程序,所以作者在明確了系統(tǒng)需要做到的主要功能之后降開始對系統(tǒng)界面進行大致的制作,然后針對具體的功能需要以及界面操作開始進行實際的編碼,在實際編碼 過程中也將對界面進SuperProxy 代理列表的操作 驗證所有的代理 導出可用代理到文本文檔 IE 代理的設置 提供代理資源列表 代理驗證的設置 代理列表的導入 第 5 頁 共 22 頁 行一定的改動。 整個系統(tǒng)從邏輯上看可以分為 3 個 大部分 (從界面上也可以顯然的看出來 ): 1. 代理服務器列表部分 2. 代理資源網(wǎng)列表部分 3. 驗證代理列表功能部分 對于部分 1,主要是顯示代理列表,右鍵出現(xiàn)上下文 菜單,菜單中包括對代理列表的一些相關(guān)操作,如復制代理,刪除代理 ,選定為 IE 代理等。 對于部分 2,需要完成的功能從實質(zhì)上是和 1)相同,上下文菜單中同樣會包括一些諸如添加資源,刪除資源等的選項。在系統(tǒng)里將會用可編輯的 .txt 文件來保存代理,對于單個代理來說在 .txt 文件中獨行存儲且具有特定的格式: 代理地址:端口號@ HTTP描述 (一般是代理的歸屬地 ) :80US :3128Great Britain (UK) :3128HK :80HK :3128HK :80HK 2) 針對代理資源列表的加載,我們同樣需要規(guī)定代理資源的格式問題首先確定代理資源網(wǎng)站的格式為: 網(wǎng)站名稱 網(wǎng)站地址 _網(wǎng)站描述 例:代理中國 () 但這里我們希望從特定的路徑加載資源,并把增加或者刪除資源都具體反應到這個特定路徑的特定名字的資源文件中,而不是單純的反應到界面列表之中。 第 7 頁 共 22 頁 3) 針對代理的驗證問題,這將是整個系統(tǒng)的關(guān)鍵部分也將是整個系統(tǒng)設計的難點部分,因為要驗證一定數(shù)目 的代理,需要用到多線程,這將通過 MFC 中的 WinThread 類來實現(xiàn),另外需要連接 Inter,將用 Win 類完成具體的實現(xiàn)細節(jié),其中也將會用到自定義消息來完成一些相關(guān)操作。 主要 實現(xiàn)思想為在程序運行目錄下尋找存在代理資源網(wǎng)站的 .txt 文件,如果存在則把其中的代理資源加載入代理資源列表m_listProxyWeb 中。 BOOL CSuperProxyDlg::LoadResourseListFile() { //加載資源文件 中內(nèi)容到資源列表中 CStdioFile file。 sFileName = 。 CString sName, sAddress, sDescription。 if(!(sFileName, CFile::modeRead)) { (0,代理中國 )。 return FALSE。 if(nFind = 0) { sDescription = (() nFind 1)。 } // 尋找資源的地址信息 nFind = (_T())。 sName = (nFind)。 (0,1,sAddress)。 } 第 9 頁 共 22 頁 return TRUE。實現(xiàn)原理為:開啟多個線程,讓每一個線程通過列表中的代理去連接某個特定網(wǎng)站 (如 ),下載它的頁面存與某個字符串中,記錄下整個過程的時間,然后在這個字符串中尋找特定字符串 (如 ” My Yahoo!” ),存在則說明代理可用,如果不存在或者說在用代理去連接網(wǎng)站的時候出現(xiàn)異常,不能連接或者連接超時則說明不可用,下面按照程序的流程來描述這段代碼: 1. 判斷列表中是否有代理,沒有代理則不需要驗證。 if(nItemCount = 0) { // 沒有什么來驗證的 return。 PreVerify()。如果沒有設置驗證參數(shù),則默認開啟 30 個線程,使用默認站點 和默認字符串 My Yahoo!來驗證代理。 if(nRunCount m_nThreadsCanRun) nRunCount = m_nThreadsCanRun。 for(i=0。 i++) { g_apThread[i] = new CProxyVerifyThread。 PostVerify()。 } } // // 設置每個驗證線程的參數(shù) CString sProxy。 for(i=0。 i++) { do { sProxy = GetProxyItem(m_nNextVerifyItem, FALSE)。 m_nNextVerifyItem ++。 sVerifyString=My Yahoo!。 SetTimer(VERIFY_TIMER_ID_START + i, THREAD_TIME_OUT, NULL)。 break。 } 4. 通過發(fā)線程消息的方式開啟所有線程。 im_nThreadRunning。 } 5. 線程開啟后,進入真正的驗證代碼 (封裝于獨立的 CProxyVerifyThread類中 ),這里主要是對 HTTP 服務器進行驗證 ,用 MFC 中的 Win 類來實現(xiàn)。 圖 5 Win類工作流程圖 // 按照 HTTP協(xié)議來驗證服務器 CString sProxy。 DWORD dwTimeStartLink, dwTimeEndLink。 CString sFileDownload, sLine。 m_pSession = new CInterSession( _T(Mozilla/ (patible。 Windows 98)), 0, INTERNET_OPEN_TYPE_PROXY, sProxy, NULL, INTERNET_FLAG_DONT_CACHE)。 return。 // 5秒的連接超時 m_pSessionSetOption(INTERNET_OPTION_SEND_TIMEOUT, 1000)。 // 7秒的接收超時 m_pSessionSetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT, 1000)。 // 7秒的接收超時 m_pSessionSetOption(INTERNET_OPTION_CONNECT_RETRIES, 1)。 m_pHttpConn = m_pSessionGetHttpConnection(_T())。 m_pSessionClose()。 m_pSession = NULL。 } CString strObject。 CHttpFile *m_pHttpFile = NULL。 if(m_pHttpFile == NULL) { nVerifyState = VERIFY_FAILED。 m_pSessionClose()。 m_pHttpConn = NULL。 m_pSession = NULL。 } ()。// // 記錄動作開始時間 try { bSuccess = m_pHttpFileSendRequest()。 } 第 14 頁 共 22 頁 //m_aVerify[nDestID].sRecieveString = sFileDownload。 return。 if(m_pHttpFile != NULL) m_pHttpFileClose()。 if(m_pSession != NULL) m_pSessionClose()。 m_pHttpFile = NULL。 m_pHttpConn = NULL。 m_pSession = NULL。 } dwTimeEndLink = GetTickCount()。 if((My Yahoo!) = 0) { nVerifyState = VERIFY_SUCCESS。 } 6. 單個線程驗證結(jié)束后發(fā)自定義的結(jié)束消息將驗證結(jié)果寫入代理列表,如果驗證失敗就將代理列表中驗證狀態(tài)設置為不可用,如果驗證代理是可用的則把驗證花費的時間填寫入代理列表中。 if(m_hwndParent != NULL) { // 如果定義了需要接收消息的窗口 SendMessage(m_hwndParent, m_nFinishMessage, (WPARAM)m_nThreadID, (LPARAM)m_nLParam)。 INT nVerifyItem = (INT)lParam。 ASSERT (nID = 0 amp。 nID m_nThreadsCanRun)。 CProxyVerifyThread *p = g_apThread[nID]。 if(p == NULL) return。 m_nThreadRunning 。 第 16 頁 共 22 頁 (_T(%.1f), pdbEndTime)。 (nVerifyItem, (INT)(pdbEndTime))。 (nVerifyItem, 100)。 INT nItemCount = ()。 if(m_bVerifyAll == TRUE) {// 如果是驗證全部代理 do { if(m_nNextVerifyItem = nItemCount) break。 g_apThread[nID]SetNotifyParent(GetSafeHwnd(), MY_WM_VERIFY_NOTIFY, MY_WM_VERIFY_FINISHED, nID, m_nNextVerifyItem)。 if(g_apThread[nID]SetProxy(sProxy)) { // 設置指定的代理成功 (m_nNextVerifyItem1, LIST_VERIFY_COLUMN, 驗證中 )。 bNeedStart = TRUE。 } 第 17 頁 共 22 頁 }while(m_nNextVerifyItem nItemCount)。 if(!(m_nNextVerifyItem, LVIS_SELECTED)) { m_nNextVerifyItem ++。 } sProxy = GetProxyItem(m_nNextVerifyItem, FALSE)。 if(m_nNextVerifyItem nItemCount) m_nNextVerifyItem ++。 m_nThreadRunning ++。 break。 } if(bNeedStart) { //如果需要繼續(xù)驗證 g_apThread[nID]PostThreadMessage(MY_WM_VERIFY_START, 0, 0)。 //驗證完則關(guān)閉所有線程并調(diào)整界面 if(m_nNextVerifyItem = nItemCount amp。 m_nThreadRunning = 0) PostVerify()。下面將針對這兩個階段進行描述。通常而言,一個單元測試是用于判斷某個特定條件 (或者場景 )下某個特定函數(shù)的行為 。這通常比插入斷點,來一步步看變量值來得更直接一些。 這里就 IE 代理的設置這樣一個獨立的系統(tǒng)進行的黑盒測試描述: 1) 代理列表中存在如下的代理數(shù)據(jù): 圖 6 代理列表 2) 選擇其中的一個代理然后,點擊選定設為 IE代理: 彈出對話框: 第 19 頁 共 22 頁 圖 7 代理設置確定對話框 3) 點擊確定: 圖 8 代理設置成功對話框 4) 點擊確定,然后轉(zhuǎn)入 IE 屬性 \連接 \局域網(wǎng)設置: 圖 9 局域網(wǎng)代理設置對話框 圖 9 局域網(wǎng)設置 可以看到 IE代理生效,轉(zhuǎn)到注冊表: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Inter Settings\下可以看到: 圖 10 注冊表中對應鍵值 可以看到兩個鍵值都經(jīng)
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1