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

隨筆 - 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>
            亚洲毛片一区| 欧美日韩在线观看一区二区三区 | 欧美风情在线观看| 女同性一区二区三区人了人一| 久热精品在线| 欧美日本一区二区高清播放视频| 欧美激情一区二区在线 | 亚洲欧美国产不卡| 欧美一区二区三区在线视频| 久久久久久穴| 欧美肉体xxxx裸体137大胆| 国产精品视频午夜| 久久国产精品第一页| 久久精品国产久精国产爱| 亚洲一区二区不卡免费| 久久gogo国模裸体人体| 欧美高清视频| 亚洲小说区图片区| 久久一区二区三区av| 欧美日韩另类丝袜其他| 国产一区二区三区在线观看精品 | 麻豆精品视频| 国产精品成人免费| 亚洲国产99精品国自产| 亚洲欧美激情一区| 亚洲高清视频的网址| 亚洲午夜免费视频| 欧美高清一区| 亚洲国产成人在线播放| 欧美亚洲自偷自偷| 亚洲精品视频在线| 久久久蜜桃一区二区人| 欧美色精品在线视频| 亚洲国产另类久久精品| 欧美在线国产精品| 一区二区三区四区国产精品| 欧美护士18xxxxhd| 91久久中文字幕| 女人色偷偷aa久久天堂| 欧美一级淫片aaaaaaa视频| 欧美日本簧片| 亚洲美女色禁图| 欧美国产日韩一区二区三区| 久久精品一二三区| 国产一区二区久久精品| 欧美在线观看日本一区| 亚洲婷婷在线| 国产精品v欧美精品∨日韩| 一本久久a久久免费精品不卡| 老牛国产精品一区的观看方式| 亚洲综合色网站| 国产精品美女诱惑| 亚洲免费伊人电影在线观看av| 亚洲精一区二区三区| 欧美成人免费全部| 亚洲精品资源| 99成人在线| 欧美特黄视频| 亚洲欧美视频在线观看视频| 亚洲一区二区3| 国产精品捆绑调教| 久久大逼视频| 久久久欧美精品| 亚洲青涩在线| 在线一区亚洲| 国产精品porn| 欧美在线播放一区| 国产精品99免视看9| 99re成人精品视频| 99亚洲伊人久久精品影院红桃| 欧美日韩亚洲在线| 午夜一区二区三区在线观看| 午夜日韩电影| 亚洲国产免费| 日韩网站在线观看| 国产日本欧美视频| 欧美777四色影视在线| 欧美精品1区2区| 新片速递亚洲合集欧美合集| 欧美在线观看你懂的| 亚洲韩国日本中文字幕| 99国产精品99久久久久久| 国产精品美女久久久免费| 久久久久久久久久码影片| 免费久久99精品国产自在现线| 亚洲视频在线观看一区| 欧美一区二区在线免费观看| 亚洲黑丝在线| 亚洲欧美综合另类中字| 亚洲韩国精品一区| 亚洲在线成人| 亚洲人体偷拍| 亚洲欧美日韩综合| 亚洲免费观看高清完整版在线观看熊| 一本久道久久久| 樱桃国产成人精品视频| 99精品免费| 亚洲国产欧美在线| 亚洲男人的天堂在线观看| 亚洲国产一区在线观看| 亚洲砖区区免费| 99视频在线观看一区三区| 新狼窝色av性久久久久久| 一本色道久久综合亚洲91| 久久久福利视频| 性8sex亚洲区入口| 欧美精品一区二区三区四区| 久久婷婷成人综合色| 国产精品久久久久毛片大屁完整版| 噜噜噜久久亚洲精品国产品小说| 国产精品久久久久久久7电影| 亚洲国产精品视频一区| 激情久久久久久| 西西人体一区二区| 亚洲一区二区视频在线| 欧美大片免费观看| 你懂的视频一区二区| 国产在线播放一区二区三区| 亚洲深夜影院| 亚洲自拍偷拍麻豆| 欧美日韩和欧美的一区二区| 亚洲国产高清在线| 亚洲电影免费观看高清完整版在线观看| 亚洲欧美日韩国产综合| 亚洲欧美精品一区| 欧美色123| 亚洲午夜精品17c| 亚洲欧美视频一区| 国产精品欧美在线| 亚洲神马久久| 亚洲欧美日韩中文视频| 欧美亚洲不卡| 制服丝袜激情欧洲亚洲| 亚洲欧洲av一区二区| 香蕉久久夜色精品国产使用方法| 欧美日韩一区二区三区在线 | 亚洲欧美日本日韩| 亚洲影院一区| 国产精品国产亚洲精品看不卡15 | 国内精品久久久久影院优| 亚洲在线中文字幕| 欧美在线三区| 激情欧美一区二区三区在线观看| 欧美一级大片在线观看| 久久久亚洲影院你懂的| 激情文学一区| 欧美成人在线影院| 亚洲精品久久在线| 亚洲欧美日韩另类| 国产午夜精品久久久| 久久精品人人爽| 亚洲人成人77777线观看| 国产精品99久久不卡二区| 欧美午夜片欧美片在线观看| 亚洲欧美国产一区二区三区| 久久一日本道色综合久久| 亚洲欧洲三级电影| 欧美性片在线观看| 久久aⅴ国产欧美74aaa| 欧美激情精品久久久久久蜜臀| 一本色道久久综合亚洲91| 国产女同一区二区| 免费成人激情视频| 亚洲性视频网址| 狼人天天伊人久久| 亚洲午夜小视频| 激情成人av| 欧美性一区二区| 久久尤物电影视频在线观看| 一本色道久久综合亚洲精品小说| 欧美在线视频网站| 99re8这里有精品热视频免费| 国产欧美日韩一区二区三区| 欧美成人影音| 久久狠狠久久综合桃花| 日韩一级精品| 欧美国产高潮xxxx1819| 欧美伊久线香蕉线新在线| 99这里只有久久精品视频| 欧美人与禽猛交乱配视频| 欧美一区二区三区四区在线| 亚洲日韩视频| 免费一级欧美在线大片| 欧美一级视频免费在线观看| 亚洲裸体俱乐部裸体舞表演av| 国产色综合久久| 欧美色精品在线视频| 欧美激情第9页| 久久一二三区| 欧美在线影院| 亚洲女性裸体视频| 洋洋av久久久久久久一区| 亚洲国产va精品久久久不卡综合| 久久天堂av综合合色| 性色av一区二区三区红粉影视| 一本色道久久综合亚洲91| 日韩一级精品视频在线观看| 亚洲第一精品久久忘忧草社区| 国产日韩欧美一区二区三区在线观看| 欧美视频中文字幕|