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

隨筆 - 298  文章 - 377  trackbacks - 0
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用鏈接

留言簿(34)

隨筆分類

隨筆檔案

文章檔案

相冊(cè)

收藏夾

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

首先是用ICMP檢查網(wǎng)絡(luò)是否連通:

bool Util::CheckInternet()
{
    
char *SendData = "Data Buffer";
    LPVOID ReplyBuffer;
    DWORD dwRetVal;
    HANDLE hIcmpFile;
    
bool b=false;
    
if ((hIcmpFile = IcmpCreateFile()) == INVALID_HANDLE_VALUE)
        
return false;

    ReplyBuffer 
= (VOID*) malloc(sizeof(ICMP_ECHO_REPLY) + sizeof(SendData));
    
if ((dwRetVal = IcmpSendEcho(hIcmpFile, 
        inet_addr(
"209.131.36.158"), //用的雅虎的一個(gè)IP,可能延遲會(huì)大一點(diǎn),用國(guó)內(nèi)的會(huì)小一點(diǎn)
        SendData, 
sizeof(SendData), 
        NULL, ReplyBuffer, 
        
sizeof(ReplyBuffer) + sizeof(ICMP_ECHO_REPLY),
        
1000)) != 0) {
        b
=true;
    }
    free(ReplyBuffer);
    
return b;
}
很簡(jiǎn)單的幾行代碼,沒(méi)有注釋;
如果網(wǎng)絡(luò)不通的話枚舉撥號(hào)連接,進(jìn)行撥號(hào):
bool RASManager::ConnectNetwork()
{
    RASENTRYNAME Entries[
15];   
    DWORD cb,cEntries,dwRet;   
    Entries[
0].dwSize=sizeof(RASENTRYNAME);   
    cb
=sizeof(Entries);   
    cEntries
=0;   
    
    dwRet
=::RasEnumEntries(NULL, NULL, &Entries[0], &cb, &cEntries);//如果函數(shù)成功,則返回0   
    
    
if(dwRet == 0)   
    {
        CHAR  szRasEntryName[RAS_MaxEntryName 
+ 1]={0};
        
for(UINT i=0;i<cEntries;i++)
            strcpy(szRasEntryName,Entries[i].szEntryName);
        RASDIALPARAMS rdParams;
        DWORD dwRet;
        hConn
=NULL;
        rdParams.dwSize
=sizeof(RASDIALPARAMS);
        strcpy(rdParams.szEntryName,szRasEntryName);
        strcpy(rdParams.szPhoneNumber,
"#777");//我用的3G卡,撥#777號(hào)碼
        strcpy(rdParams.szUserName,"用戶名");
        strcpy(rdParams.szPassword,
"密碼");
        strcpy(rdParams.szDomain,"");//這個(gè)也很重要,指定域,如果不指定這個(gè)的話下面注釋的兩句一定要加上,下邊兩句的意思是獲取最后一次連接成功時(shí)的參數(shù)信息,如果用下邊兩句的話連同這行和這行上面的三行都可以省略
       // BOOL fPass;
        //RasGetEntryDialParams(NULL, 
&rdParams,&fPass);
        dwRet
=RasDial(NULL,NULL,&rdParams,0L,NULL,&hConn);
        
if(dwRet!=0)
        {
            
return false;
        }
        
return true;
    }    
    
else    
    {    
        
return false;
    }
}
預(yù)先建立撥號(hào)連接,以上撥號(hào)代碼經(jīng)過(guò)修改已經(jīng)不需要保存密碼,只建立一個(gè)撥號(hào)連接即可。Windows XP or later:  Do not use the RasSetEntryDialParams function. MSDN上面的說(shuō)法就是RasSetEntryDialParams 別在XP之后的系統(tǒng)上使用了。
檢查撥號(hào)連接的狀態(tài),如果已經(jīng)通過(guò)撥號(hào)連接上了網(wǎng)絡(luò)當(dāng)然不用再進(jìn)行撥號(hào)了,代碼如下:
bool RASManager::RasGetConnectStatus()
{
    LPRASCONN lpRasConn 
= NULL;    
    DWORD   cbBuf   
=   0;    
    DWORD   cConn   
=   0;    
    DWORD   dwRet   
=   0;    
    HRASCONN  hrasconn;
    
bool    bResult=FALSE;
    RASCONNSTATUS rasStatus;    
    UINT   ndx;
    cbBuf 
= sizeof(RASCONN);
    lpRasConn 
= (LPRASCONN)malloc((UINT)cbBuf);  
    
if (lpRasConn != NULL)
    {    
        lpRasConn
->dwSize = sizeof(RASCONN);    
        dwRet 
= RasEnumConnections(lpRasConn,&cbBuf,&cConn);  
        
for(ndx=0;ndx<cConn;ndx++)      
        {
            hrasconn 
= lpRasConn[ndx].hrasconn;            
            rasStatus.dwSize 
= sizeof(RASCONNSTATUS);
            dwRet 
= ::RasGetConnectStatus(hrasconn,&rasStatus);
            
if(dwRet)    
                bResult
=FALSE;    
            
else
            {    
                
if(rasStatus.rasconnstate == RASCS_Connected)    
                    bResult
=TRUE;    
                
else
                    bResult
=FALSE;    
            }
        }
    }
    
else
        bResult
=FALSE;
    free(lpRasConn);
    
return bResult;
}
以上判斷是如果檢查到有一個(gè)已經(jīng)連接的撥號(hào)連接就返回了,應(yīng)該不會(huì)有兩個(gè)或者以上的撥號(hào)連接同時(shí)連接,打開(kāi)端口會(huì)失敗的。
還有一個(gè)是斷線:
void RASManager::HungUP()
{
    LPRASCONN lpRasConn
=NULL;
    DWORD   cbBuf 
= 0;
    DWORD   cConn 
= 0;
    DWORD   dwRet 
= 0;
    HRASCONN   hrasconn;
    RASCONNSTATUS rasStatus;
    UINT   ndx;
    
    cbBuf 
= sizeof(RASCONN);
    lpRasConn 
= (LPRASCONN)malloc((UINT)cbBuf);
    
if(lpRasConn != NULL)
    {
        lpRasConn
->dwSize = sizeof(RASCONN);    
        dwRet 
= RasEnumConnections(lpRasConn,&cbBuf,&cConn);  
        
        
for(ndx=0;ndx<cConn;ndx++)
        {
            hrasconn 
= lpRasConn[ndx].hrasconn;
            rasStatus.dwSize 
= sizeof(RASCONNSTATUS);
            dwRet 
= ::RasGetConnectStatus(hrasconn,&rasStatus);
            
if(!dwRet)
            {
                
if(rasStatus.rasconnstate == RASCS_Connected)
                    RasHangUp(hrasconn);
            }
        }
        free(lpRasConn);
    }
}
這個(gè)沒(méi)什么好說(shuō)的,執(zhí)行關(guān)閉撥號(hào)連接的操作。
用程序創(chuàng)建連接,經(jīng)過(guò)修改,已經(jīng)可以正常創(chuàng)建連接,代碼如下:
bool RASManager::CreateRASLink()
{
    LPRASENTRY lpRasEntry 
= NULL;
    DWORD cb 
= sizeof(RASENTRY);
    DWORD dwBufferSize 
= 0;
    DWORD dwRet 
= 0;
    
    
    
// 取得entry的大小,這句也不知道是不是必須的,因?yàn)閟izeof(RASENTRY)和這里取到的dwBufferSize是一樣的,不過(guò)還是Get一下安全點(diǎn)
    RasGetEntryProperties(NULL,"", NULL, &dwBufferSize, NULL, NULL); 
    
if (dwBufferSize == 0)
        
return false;
    
    lpRasEntry 
= (LPRASENTRY)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwBufferSize);
    
if (lpRasEntry == NULL)
        
return false;
    
    ZeroMemory(lpRasEntry, 
sizeof(RASENTRY));
    lpRasEntry
->dwSize = dwBufferSize;
    lpRasEntry
->dwfOptions = RASEO_RemoteDefaultGateway|RASEO_PreviewPhoneNumber|RASEO_PreviewUserPw; // 這里的幾個(gè)選項(xiàng)挺重要的,RASEO_RemoteDefaultGateway這個(gè)選項(xiàng)把創(chuàng)建的連接設(shè)置為默認(rèn)連接,RASEO_PreviewPhoneNumber對(duì)應(yīng)選項(xiàng)中的提示輸入電話號(hào)碼,RASEO_PreviewUserPw對(duì)應(yīng)選項(xiàng)中的提示用戶名和密碼
    lpRasEntry->dwType = RASET_Phone;
    
    lstrcpy(lpRasEntry
->szDeviceType, RASDT_Modem);
    lstrcpy(lpRasEntry
->szDeviceName,"www");
    lpRasEntry
->dwfNetProtocols = RASNP_Ip;
    lpRasEntry
->dwFramingProtocol = RASFP_Ppp;
    
    dwRet 
= RasSetEntryProperties(NULL, "www", lpRasEntry, dwBufferSize, NULL, 0); // 創(chuàng)建連接
//
The RasSetEntryProperties function changes the connection information for an entry in the phone book or creates a new phone-book entry.(reference MSDN)
    HeapFree(GetProcessHeap(), 0, (LPVOID)lpRasEntry);
    
    
if (dwRet != 0)
        
return false;
    
return true;
}
上面的代碼到是可以創(chuàng)建一個(gè)撥號(hào)連接,不過(guò)是個(gè)空的,里面沒(méi)用用戶名和密碼等信息,需要用上面的撥號(hào)代碼來(lái)指定撥號(hào)參數(shù),不能使用RasGetEntryDialParams來(lái)獲取了。
上面的代碼基本上是在網(wǎng)絡(luò)上搜索所得,稍加修改,在這里整理一下。

再補(bǔ)充一下刪除連接的操作,代碼如下:
void RASManager::DeletePhoneBookEntry()
{
    RASENTRYNAME Entries[
15];   
    DWORD cb,cEntries,dwRet;
    Entries[
0].dwSize=sizeof(RASENTRYNAME);   
    cb
=sizeof(Entries);
    cEntries
=0;   
    
    dwRet
=::RasEnumEntries(NULL, NULL, &Entries[0], &cb, &cEntries);//如果函數(shù)成功,則返回0   
    
    
if(dwRet == 0)   
    {
        CHAR  szRasEntryName[RAS_MaxEntryName 
+ 1]={0};
        
for(UINT i=0;i<cEntries;i++)
        {
            strcpy(szRasEntryName,Entries[i].szEntryName);
            RasDeleteEntry(NULL,szRasEntryName);
        }
    }
}
要想實(shí)現(xiàn)自動(dòng)啟動(dòng)撥號(hào)網(wǎng)絡(luò),就要使用Remote Access Service (RAS) API,這個(gè)API最早是在Windows for Workgroup 3.11中出現(xiàn)的,現(xiàn)在它已經(jīng)成為Win32 API的一個(gè)組成部分。該API將整個(gè)撥號(hào)網(wǎng)絡(luò)稱為Phonebook,而每一個(gè)連接稱為PhonebookEntry。你可以使用RasCreatePhonebookEntry來(lái)創(chuàng)建新的連接,用RasDial來(lái)?yè)芴?hào),而RasEnumEntries可以獲得當(dāng)前系統(tǒng)已有的所有連接,使用其它的RAS函數(shù)還可以獲取或設(shè)置連接的參數(shù)。 RasEditPhonebookEntry函數(shù)將激活標(biāo)準(zhǔn)的Windows 95/NT屬性對(duì)話框來(lái)修改連接的屬性。你可以從Win32 API的手冊(cè)找到所有相關(guān)函數(shù)的詳細(xì)介紹。

補(bǔ)充:在windows中一個(gè)撥號(hào)連接即為一個(gè)PhonrbookEntry以下稱為電話薄記錄或是連接。總的這些稱為Phonebook。
posted on 2013-03-17 20:10 聶文龍 閱讀(438) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Visual C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人蜜桃| 国产精品尤物| 日韩一级大片| 最新亚洲视频| 亚洲精品视频啊美女在线直播| 女同一区二区| 欧美国产精品中文字幕| 欧美顶级大胆免费视频| 欧美成人国产| 亚洲韩国精品一区| 一本色道久久综合一区| 亚洲欧美日韩视频二区| 久久久久久电影| 久久中文精品| 欧美日韩精品免费观看视频完整| 欧美日韩中文在线观看| 国产午夜精品美女毛片视频| 亚洲国产一区二区三区青草影视 | 美女在线一区二区| 欧美顶级少妇做爰| 欧美一区二区| 黄色国产精品| 日韩视频在线你懂得| 亚洲一区二区动漫| 久久影院午夜片一区| 亚洲精品国产精品久久清纯直播 | 午夜久久久久久久久久一区二区| 欧美在线一二三| 女主播福利一区| 国产精品亚洲综合一区在线观看| 伊人色综合久久天天| 亚洲天堂av在线免费| 美女精品在线| 国产精品99久久久久久有的能看| 久久在线免费| 好看的日韩视频| 亚洲欧美精品一区| 亚洲国产欧美在线人成| 久久精品国产96久久久香蕉| 欧美日韩在线播放一区| 91久久精品国产91性色tv| 久久男人资源视频| 香港久久久电影| 国产精品99免费看 | 欧美日韩成人一区二区| 国内精品久久久久久久影视蜜臀| 在线一区亚洲| 日韩视频免费看| 蜜臀av在线播放一区二区三区| 国产香蕉97碰碰久久人人| 亚洲午夜在线| 亚洲伦理在线观看| 欧美日韩高清在线播放| 亚洲精品国产品国语在线app| 久久天堂av综合合色| 久久精品国产欧美亚洲人人爽| 国产欧美精品国产国产专区| 亚洲欧美日韩视频二区| 中文一区在线| 国产精品免费aⅴ片在线观看| 中日韩美女免费视频网址在线观看| 亚洲激情午夜| 欧美日本亚洲| 亚洲一二三四久久| 亚洲一品av免费观看| 国产精品视频精品视频| 欧美在线高清视频| 久久精品视频播放| 亚洲福利视频一区二区| 欧美黄色一区二区| 欧美日韩国产首页| 亚洲综合精品| 亚洲国产一区二区在线| 中日韩在线视频| 亚洲乱码久久| 国产精品三上| 久久国产精品第一页| 欧美在线视屏| 亚洲黄色影院| 99国内精品| 国产精品一区免费在线观看| 久久九九电影| 欧美成人综合网站| 亚洲综合色噜噜狠狠| 先锋影音国产一区| 亚洲欧洲精品一区二区三区波多野1战4| 欧美黄色一区二区| 欧美性猛交xxxx乱大交蜜桃| 久久国产福利| 欧美激情网站在线观看| 亚洲欧美日韩国产中文在线| 欧美亚洲免费高清在线观看| 亚洲高清一二三区| 在线亚洲一区观看| 亚洲国产精品ⅴa在线观看| 日韩视频―中文字幕| 国产一区二区高清| 亚洲毛片在线观看| 伊人影院久久| 亚洲无线视频| 日韩视频一区二区三区在线播放| 夜夜嗨av一区二区三区四区| 一区二区在线观看av| 制服诱惑一区二区| 亚洲国产成人久久综合一区| 亚洲中字在线| 亚洲最新视频在线| 久久久午夜电影| 午夜亚洲一区| 欧美日韩在线免费观看| 欧美mv日韩mv国产网站app| 国产精品免费观看在线| 亚洲靠逼com| 亚洲人成网站色ww在线| 欧美在线中文字幕| 午夜精品久久久久久久久久久| 欧美国产亚洲另类动漫| 猛男gaygay欧美视频| 国产夜色精品一区二区av| 这里只有视频精品| 亚洲色在线视频| 欧美高清在线一区二区| 老司机aⅴ在线精品导航| 国产精品综合不卡av| 一本大道av伊人久久综合| 亚洲精品美女在线观看| 久久在线视频| 欧美成人一二三| 精品动漫3d一区二区三区免费版| 午夜在线一区| 久久激情久久| 国产日韩综合| 性色av一区二区三区| 欧美在线观看网站| 国产精品一区二区三区乱码| 亚洲一区二区在线视频| 午夜一区在线| 国产日韩在线视频| 欧美视频在线免费看| 亚洲免费观看在线观看| 亚洲啪啪91| 欧美激情视频一区二区三区不卡| 亚洲高清免费在线| 亚洲免费观看高清完整版在线观看熊| 蜜臀久久99精品久久久久久9| 欧美高清日韩| 99精品国产99久久久久久福利| 欧美日韩国产区一| 亚洲尤物在线| 久久噜噜噜精品国产亚洲综合| 今天的高清视频免费播放成人 | 黄色精品免费| 久久这里有精品视频| 亚洲精美视频| 性欧美超级视频| 国产一区视频在线看| 美女91精品| 亚洲视频一起| 久久只有精品| 99在线精品视频| 国产日韩欧美三级| 欧美sm视频| 这里是久久伊人| 久久综合中文| 在线亚洲精品福利网址导航| 国产欧美丝祙| 欧美大片第1页| 午夜精品视频一区| 亚洲国产欧美一区二区三区久久| 亚洲欧美日本精品| 在线精品视频免费观看| 欧美视频中文字幕| 美女在线一区二区| 亚洲尤物在线视频观看| 欧美成人自拍| 欧美一区二区在线看| 亚洲精品国产日韩| 国产一区二区三区在线免费观看 | 久久久91精品国产| 亚洲精品无人区| 久久性天堂网| 亚洲女同同性videoxma| 亚洲黄色在线观看| 国产亚洲一区二区三区在线播放| 欧美精品一区二区视频 | 日韩一区二区免费高清| 久色婷婷小香蕉久久| 亚洲一区二区少妇| 亚洲欧洲三级电影| 精品999成人| 国产乱码精品| 欧美午夜在线| 欧美巨乳在线观看| 蜜月aⅴ免费一区二区三区| 羞羞答答国产精品www一本| 一本一道久久综合狠狠老精东影业| 欧美v国产在线一区二区三区| 久久动漫亚洲| 欧美亚洲综合久久| 亚洲欧美国产77777|