论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

代理服务器测试程序(论文+程序)

5.1          代理资源列表模块实现

copyright paper51.com

这里列出这样一个函数,完成代理资源列表的加载。 内容来自www.paper51.com

主要实现思想为在程序运行目录下寻找存在代理资源网站的.txt文件wresourse.txt,如果存在则把其中的代理资源加载入代理资源列表m_listProxyWeb中。如果不存在则把默认的站点: http://www.paper51.com

代理中国-http://www.proxycn.com/_代理中国(ProxyCN.COM)加载入列表。 http://www.paper51.com

BOOLCSuperProxyDlg::LoadResourseListFile()

http://www.paper51.com

{  

copyright paper51.com

    //加载资源文件"wresourse.txt"中内容到资源列表中 内容来自论文无忧网 www.paper51.com

    CStdioFile file; 内容来自www.paper51.com

    CString sLine,sFileName;

内容来自www.paper51.com

    sFileName ="wresourse.txt"; 内容来自论文无忧网 www.paper51.com

    //LPCTSTR lpszFile =(LPCTSTR)sFileName; http://www.paper51.com

       CString sName, sAddress,sDescription;

内容来自论文无忧网 www.paper51.com

    INT nFind;

内容来自论文无忧网 www.paper51.com

    if(!file.Open(sFileName,CFile::modeRead)) copyright paper51.com

    {

copyright paper51.com

       m_listProxyWeb.InsertItem(0,"代理中国"); paper51.com

       m_listProxyWeb.SetItemText(0,1,"http://www.proxycn.com/"); copyright paper51.com

       m_listProxyWeb.SetItemText(0,2,"代理中国(ProxyCN.COM)");

内容来自论文无忧网 www.paper51.com

        returnFALSE; http://www.paper51.com

    } copyright paper51.com

    else

copyright paper51.com

    {       内容来自论文无忧网 www.paper51.com

       while(file.ReadString(sLine))

http://www.paper51.com

        {

内容来自www.paper51.com

               //寻找资源的描述信息

内容来自www.paper51.com

           nFind = sLine.Find(_T("_"));

copyright paper51.com

           if(nFind >= 0)

paper51.com

            {  

paper51.com

               sDescription = sLine.Right(sLine.GetLength() - nFind - 1);

copyright paper51.com

               sLine = sLine.Left(nFind); http://www.paper51.com

            } http://www.paper51.com

              // 寻找资源的地址信息

http://www.paper51.com

           nFind = sLine.Find(_T("-"));

paper51.com

           if(nFind >= 0)

内容来自论文无忧网 www.paper51.com

            {

内容来自论文无忧网 www.paper51.com

               sAddress = sLine.Right(sLine.GetLength() - nFind - 1); paper51.com

               sName =sLine.Left(nFind);

paper51.com

            } 内容来自论文无忧网 www.paper51.com

            m_listProxyWeb.InsertItem(0,sName); copyright paper51.com

            m_listProxyWeb.SetItemText(0,1,sAddress); 内容来自www.paper51.com

           m_listProxyWeb.SetItemText(0,2,sDescription);   copyright paper51.com

        }

copyright paper51.com

        return TRUE;

paper51.com

    } 内容来自www.paper51.com

} copyright paper51.com

5.2         代理验证模块实现 paper51.com

主要运用CWinInet类来实现。实现原理为:开启多个线程,让每一个线程通过列表中的代理去连接某个特定网站(如www.yahoo.com),下载它的页面存与某个字符串中,记录下整个过程的时间,然后在这个字符串中寻找特定字符串(如”My Yahoo!”),存在则说明代理可用,如果不存在或者说在用代理去连接网站的时候出现异常,不能连接或者连接超时则说明不可用,下面按照程序的流程来描述这段代码:

内容来自www.paper51.com

1.      判断列表中是否有代理,没有代理则不需要验证。 paper51.com

INT nItemCount =m_listProxy.GetItemCount(); 内容来自论文无忧网 www.paper51.com

  if(nItemCount <= 0)

copyright paper51.com

  { // 没有什么来验证的

http://www.paper51.com

      return; paper51.com

  }

copyright paper51.com

2.       验证前界面调整,主要是设置各个按钮的状态,使用户在验证过程中除了操作停止按钮之外,不能操作其他的控件。

paper51.com

PreVerify();

paper51.com

3.      根据代理列表中的代理个数以及验证设置对话框中的设置来创建需要的线程并设置各个线程的参数。如果没有设置验证参数,则默认开启30个线程,使用默认站点www.yahoo.com和默认字符串My Yahoo!来验证代理。

http://www.paper51.com

    INT nRunCount = nItemCount;

copyright paper51.com

    if(nRunCount > m_nThreadsCanRun)

http://www.paper51.com

        nRunCount =m_nThreadsCanRun;

paper51.com

    // // 创建线程 paper51.com

    INT i; http://www.paper51.com

    for(i=0; i<nRunCount; i++) copyright paper51.com

    { http://www.paper51.com

            g_apThread[i]= new CProxyVerifyThread;

内容来自www.paper51.com

            if(g_apThread[i]== NULL) 内容来自www.paper51.com

            {// 如果创建失败 paper51.com

                MessageBox(_T("创建验证线程中发生异常"),_T("验证失败")); 内容来自论文无忧网 www.paper51.com

                PostVerify(); 内容来自www.paper51.com

                return; 内容来自论文无忧网 www.paper51.com

            }

paper51.com

    }

内容来自论文无忧网 www.paper51.com

    // // 设置每个验证线程的参数 内容来自论文无忧网 www.paper51.com

    CString sProxy; copyright paper51.com

       CString sDestURL,sVerifyString; copyright paper51.com

    for(i=0; i<nRunCount;i++)

内容来自www.paper51.com

    { 内容来自www.paper51.com

        do copyright paper51.com

        { copyright paper51.com

            sProxy= GetProxyItem(m_nNextVerifyItem, FALSE);

paper51.com

            g_apThread[m_nThreadRunning]->SetNotifyParent(GetSafeHwnd(), paper51.com

                MY_WM_VERIFY_NOTIFY,

http://www.paper51.com

                MY_WM_VERIFY_FINISHED,

内容来自论文无忧网 www.paper51.com

                i,m_nNextVerifyItem); copyright paper51.com

            m_nNextVerifyItem++; 内容来自论文无忧网 www.paper51.com

            if(g_apThread[i]->SetProxy(sProxy)) copyright paper51.com

            { 内容来自论文无忧网 www.paper51.com

                sDestURL="www.yahoo.com";

paper51.com

                 sVerifyString="My Yahoo!";

http://www.paper51.com

            }

copyright paper51.com

            if(g_apThread[i]->CreateThread()) 内容来自www.paper51.com

            { 

内容来自www.paper51.com

                m_listProxy.SetItemText(m_nNextVerifyItem-1,

copyright paper51.com

                        LIST_VERIFY_COLUMN,"验证中..."); 内容来自论文无忧网 www.paper51.com

                SetTimer(VERIFY_TIMER_ID_START+ i,

paper51.com

                        THREAD_TIME_OUT,NULL); paper51.com

                m_nThreadRunning++; 内容来自论文无忧网 www.paper51.com

                break;

http://www.paper51.com

            }

copyright paper51.com

            内容来自论文无忧网 www.paper51.com

        }while(m_nNextVerifyItem< nItemCount);

内容来自论文无忧网 www.paper51.com

    } 内容来自论文无忧网 www.paper51.com

4.      通过发线程消息的方式开启所有线程。 paper51.com

// 启动所有线程!

copyright paper51.com

    for(i=0;i<m_nThreadRunning; i++) paper51.com

    {

内容来自论文无忧网 www.paper51.com

        g_apThread[i]->PostThreadMessage(MY_WM_VERIFY_START,0, 0);

copyright paper51.com

    }

内容来自论文无忧网 www.paper51.com

5.      线程开启后,进入真正的验证代码(封装于独立的CProxyVerifyThread类中),这里主要是对HTTP服务器进行验证,用MFC中的Winnet类来实现。微软提供的Winnet类是一个应用层的网络通信组件,它可以使你的应用程序很容易的实现http、ftp、gopher等协议而不需要你去深入的了解协议本身的规范。 paper51.com

内容来自论文无忧网 www.paper51.com

  paper51.com

------分隔线----------------------------
联系方式