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

隨筆 - 298  文章 - 377  trackbacks - 0
<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(34)

隨筆分類

隨筆檔案

文章檔案

相冊(cè)

收藏夾

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

  在Win32 API 函數(shù)中有一組用于實(shí)現(xiàn)遠(yuǎn)程連接服務(wù)RAS 的函數(shù),利用這些函數(shù)通過編程可以實(shí)現(xiàn)建立和Internet 的撥號(hào)連接,并可獲得Internet 分配給主機(jī)的動(dòng)態(tài)IP 地址。

一、建立撥號(hào)連接API

  建立撥號(hào)連接是利用函數(shù)RasDial() 實(shí)現(xiàn)的,該函數(shù)調(diào)用后立即返回,若成功返回0 值,否則返回非0 值。在撥號(hào)連接過程中,回調(diào)函數(shù)接收連接的狀態(tài)信息及發(fā)生的錯(cuò)誤代碼?;卣{(diào)函數(shù)的原形如下:VOID WINAPI RasDialFunc(UINT unMsg,RASCONNSTATE rasconnstate,DWORD dwError)
  由于在調(diào)用RasDialFunc 函數(shù)時(shí),連接操作被掛起,因此,應(yīng)用程序應(yīng)盡快處理發(fā)生的事件并返回。可以在RasDialFunc 函數(shù)中調(diào)用PostMessage 函數(shù),將事件通知消息送給窗口函數(shù)來處理。

  RASDIALPARAMS 結(jié)構(gòu)定義如下:

  DWORD dwSize 結(jié)構(gòu)變量的大小。

  TCHAR szEntryName[RAS_MaxEntryName +1]   撥號(hào)網(wǎng)絡(luò)中建立的連接名。

  TCHAR szPhoneNumber[RAS_MaxPhoneNumber +1] 電話號(hào)碼,若采用szEntryName 中定義的號(hào)碼,置為NULL 值。

  TCHAR szCallbackNumber[RAS_MaxCallbackNumber +1] 回?fù)芴?hào)碼,不用時(shí)置為NULL。

  TCHAR szUserName[UNLEN +1] 用戶標(biāo)識(shí)。

  TCHAR szPassword[PWLEN +1] 用戶口令。

  TCHAR szDomain[DNLEN +1] 用戶權(quán)限驗(yàn)證域,若為NULL 采用RAS 服務(wù)器所在的域進(jìn)行驗(yàn)證,若為‘*’采用szEntryName 中定義的域進(jìn)行驗(yàn)證。

  RASCONNSTATE 枚舉型結(jié)構(gòu),包含撥號(hào)連接過程中各種可能狀態(tài)的定義。

  函數(shù)RasHangUp() 用來終止撥號(hào)連接,因程序需要一定的時(shí)間來結(jié)束連接,應(yīng)用程序調(diào)用該函數(shù)后不能馬上退出,需等待3 秒后才能退出。

二、獲取動(dòng)態(tài)IP 地址API

  在VC 中是通過調(diào)用函數(shù)RasGetProjectionInfo() 來獲取IP 地址的。
  函數(shù)調(diào)用成功時(shí)返回0 值,此時(shí)在RASPPPIP 結(jié)構(gòu)變量中的szIpAddress 就是動(dòng)態(tài)IP 地址。

三、程序?qū)崿F(xiàn)

  程序是在Win 95 環(huán)境下,用VC ++5.0 編寫,并編譯運(yùn)行通過。完整的源程序清單如下:
// ---?。?br />//file name ras.c
// ---?。?br />#include < windows.h >
#include < winuser.h >
#include < string.h >
#include < ras.h >
#include < raserror.h >
#include "resource.h"
// 函數(shù)原形
LRESULT CALLBACK DialogProc(HWND hDlg,
UINT message, WPARAM wParam, LPARAM lParam);
void ShowMsg(HWND hwnd,char *msg);
LRESULT MsgDialDlgEvent(HWND hdlg,
UINT uMessage, WPARAM wparam, LPARAM lparam);
VOID WINAPI RasDialFunc
( UINT unMsg, RASCONNSTATE rasconnstate,
 DWORD dwError );
BOOL StartCon( HWND hWnd,char
      *szUser,char *szPassword );
UINT GetRasConnState( RASCONNSTATE rasconn );
// 全局變量
HRASCONN  hCon; //RAS 連接句柄
HWND    hWin;
HINSTANCE  hInst;
// --- --------------
//windows 入口函數(shù)
// ---?。?br />int PASCAL WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,LPSTR lpszCmdLine,
int nCmdShow )
{
   hInst=hInstance;
   if ( DialogBox(hInstance,"RAS_DLG",NULL,
   (DLGPROC)DialogProc) == -1 )
   MessageBox(NULL,"建立對(duì)話框失敗!",
   "TITLE",MB_OK);
   return 0;
}
// -----------------
// 對(duì)話框窗口函數(shù)
// -----------------
LRESULT CALLBACK DialogProc(HWND hDlg,
UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
   case WM_INITDIALOG:
     hWin=hDlg;
     hCon=NULL;
     return (TRUE);
   case WM_RASDIALEVENT:
     MsgDialDlgEvent(hDlg,message,wParam,lParam);
     return (TRUE);
   case WM_COMMAND:
     switch (LOWORD(wParam))
     {
   case IDOK:
     StartCon( hDlg,"ljx@public.smptt.fj.cn",
"abbcd");
     break;
   case IDCANCEL:
     if ( hCon != NULL )
     {
     RasHangUp(hCon);
     Sleep(3000);
     }
     EndDialog(hDlg,TRUE);
     break;
     }
     break;
   }
   return (FALSE);
}
// ****************
// 在列表框中顯示信息
// ****************
void ShowMsg(HWND hwnd,char *msg)
{
   int lnum;
   SendDlgItemMessage(hwnd,IDC_MSG,
   LB_ADD ?STRING,0,(long)msg );
 lnum=SendDlgItemMessage(hwnd,IDC_MSG,
   LB_GETCOUNT, 0,0);
   SendDlgItemMessage(hwnd,IDC_MSG,LB_SET ?
CURSEL,lnum -1,0);
   return;
}
// -----------------
// BOOL StartCon( HWND hWnd )
// 建立撥號(hào)連接, 成功TRUE else FALSE
// szUser 和szPassword 分別為
 Internet 的用戶名和口令
// -----------------
BOOL StartCon
( HWND hWnd,char *szUser,char *szPassword )
{
  RASDIALPARAMS rdParams;
  DWORD dwRet;
   char szBuf[300];
   // 初始化變量
  rdParams.dwSize = sizeof(RASDIALPARAMS);
  lstrcpy(rdParams.szEntryName, "internet");
  rdParams.szPhoneNumber[0] = '\0';
  rdParams.szCallbackNumber[0] = '*';
  rdParams.szCallbackNumber[0] = '\0';
  strcpy(rdParams.szUserName,szUser);
  strcpy(rdParams.szPassword,szPassword);
   rdParams.szDomain[0] = '\0';
   hCon=NULL;
   // 以下開始異步撥叫網(wǎng)絡(luò)
  dwRet = RasDial( NULL, NULL, &rdParams, 0L,
      (RASDIALFUNC) RasDialFunc, &hCon );
  if ( dwRet )
  {
  if ( RasGetErrorString( (UINT)dwRet,
     (LPSTR)szBuf, 256 ) != 0 )
   wsprintf( (LPSTR)szBuf,
   “Undefined RAS Dial Error ( %ld).", dwRet );
   ShowMsg(hWnd,szBuf);
   return FALSE;
  }
   return TRUE;
}
// ---------------
// RasDial 異步處理的回調(diào)函數(shù)
// unMsg?。l(fā)生的RAS 事件
// rasconnstate -連接進(jìn)入的狀態(tài)
// dwError  ?。l(fā)生的錯(cuò)誤代碼
// ---------------
VOID WINAPI RasDialFunc
( UINT unMsg, RASCONNSTATE rasconnstate,
DWORD dwError )
{
  PostMessage(hWin,
       WM_RASDIALEVENT,
       (WPARAM) rasconnstate,
       (LPARAM) dwError );
}
// ----------------
// RasDial() 返回的事件信息由該函數(shù)處理
// ----------------
LRESULT MsgDialDlgEvent(HWND hdlg, UINT uMessage,
WPARAM wparam, LPARAM lparam)
{
RASPPPIP rip;
DWORD ll,ret;
int num;
char szMessage[256];
LoadString(hInst,GetRasConnState
( (RASCONNSTATE) wparam ), szMessage, 64 );
ShowMsg(hdlg,szMessage);
if ( lparam ) // 發(fā)生錯(cuò)誤
{
   if ( RasGetErrorString
   ( (UINT)lparam, szMessage, 256 ) != 0 )
   wsprintf( (LPSTR)szMessage,
   “出錯(cuò)Undefined RAS Dial Error." );
   ShowMsg(hdlg,szMessage);
      return TRUE;
         
  }
  else if ( RASCS_DONE &wparam ) // 連接成功
  {
   // 取動(dòng)態(tài)分配的IP 地址
   ShowMsg(hdlg,"連接成功");
   rip.dwSize=sizeof(RASPPPIP);
    if((ret=RasGetProjectionInfo(hCon,RASP_PppIp,
   (LPVOID) &rip,(LPDWORD) &ll )) != 0 )
    {
   ShowMsg(hdlg,"取IP 地址失敗");
   }
   else
   ShowMsg(hdlg,rip.szIpAddress);
  }
  return TRUE;
}
// ----------------
// 根據(jù)連接狀態(tài)
 取字符串資源中對(duì)應(yīng)的標(biāo)號(hào)
// ----------------
UINT GetRasConnState( RASCONNSTATE rasconn )
{
  switch( rasconn )
  {
    case RASCS_OpenPort:
      return IDS_OPENPORT;
    case RASCS_PortOpened:
      return IDS_PORTOPENED;
    case RASCS_ConnectDevice:
      return IDS_CONNECTDEVICE;
    case RASCS_DeviceConnected:
      return IDS_DEVICECONNECTED;
    case RASCS_AllDevicesConnected:
      return IDS_ALLDEVICESCONNECTED;
    case RASCS_Authenticate:
      return IDS_AUTHENTICATE;
    case RASCS_AuthNotify:
      return IDS_AUTHNOTIFY;
    case RASCS_AuthRetry:
      return IDS_AUTHRETRY;
    case RASCS_AuthCallback:
      return IDS_AUTHCALLBACK;
    case RASCS_AuthChangePassword:
      return IDS_AUTHCHANGEPASSWORD;
    case RASCS_AuthProject:
      return IDS_AUTHPROJECT;
    case RASCS_AuthLinkSpeed:
      return IDS_AUTHLINKSPEED;
    case RASCS_AuthAck:
      return IDS_AUTHACK;
    case RASCS_ReAuthenticate:
      return IDS_REAUTHENTICATE;
    case RASCS_Authenticated:
      return IDS_AUTHENTICATED;
    case RASCS_PrepareForCallback:
      return IDS_PREPAREFORCALLBACK;
    case RASCS_WaitForModemReset:
      return IDS_WAITFORMODEMRESET;
    case RASCS_WaitForCallback:
      return IDS_WAITFORCALLBACK;
    case RASCS_Interactive:
      return IDS_INTERACTIVE;
    case RASCS_RetryAuthentication:
      return IDS_RETRYAUTHENTICATION;
    case RASCS_CallbackSetByCaller:
      return IDS_CALLBACKSETBYCALLER;
    case RASCS_PasswordExpired:
      return IDS_PASSWORDEXPIRED;
    case RASCS_Connected:
      return IDS_CONNECTED;
    case RASCS_Disconnected:
      return IDS_DISCONNECTED;
    default:
      return IDS_UNDEFINED_ERROR;
  }
}  

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


華麗的分割線


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
序:近日,有位朋友問到用VC實(shí)現(xiàn)撥號(hào)上網(wǎng)的程序,今天在網(wǎng)上無意中發(fā)現(xiàn)了這篇文章,于是便轉(zhuǎn)載過來,希望對(duì)這位朋友有所幫助!
正文:
   大家知道,在netants、download expert等軟件中都帶有定時(shí)撥號(hào)上網(wǎng)下載軟件的功能。而一般用戶的撥號(hào)上網(wǎng),利用的是windows的remote access service(ras,遠(yuǎn)程訪問服務(wù))。下面介紹一下其在visual c++下的實(shí)現(xiàn)。
  visual c++為我們提供了包含ras api聲明的“ras.h″頭文件。要在程序中實(shí)現(xiàn)撥號(hào)上網(wǎng)功能,其大致過程如下:
  1. 利用modem撥號(hào)進(jìn)行連接,應(yīng)使用rasdial函數(shù)。
  其聲明如下:
  dword ras dial(lprasdialextensions lpras dialextensions,lpctstr lpszphonebook,lprasdialparams lp ras dialparams,dword dw notifier type,lpvoid lpv notifier, lphrasconn lph ras conn )
  參數(shù)說明:
  lprasdialextensions和lpszphonebook:僅在windows nt下有效,在windows 95下,這兩個(gè)參數(shù)被忽略。
  lprasdialparams:這個(gè)參數(shù)很重要,它指向一個(gè)rasdialparams結(jié)構(gòu),該結(jié)構(gòu)包含以下幾個(gè)成員:
  dwsize:應(yīng)設(shè)定為sizeof(rasdialparams);
  szentryname和szphonenumber:這兩個(gè)參數(shù)有聯(lián)系,szentryname可以指定要建立的連接,比方說“我的連接”等等,這是處理用戶已經(jīng)在“撥號(hào)網(wǎng)絡(luò)”里建立的連接的。這時(shí),modem將撥打你在“我的連接”中設(shè)定的isp號(hào)碼,此時(shí)szphonenumber成員設(shè)為空字符串“”即可;如果你要在程序中自行指定要撥打的isp號(hào)碼的話,szentryname可以設(shè)定為空字符串“”,此時(shí)應(yīng)設(shè)置szphonenumber為你的isp號(hào)碼(169,663等),特別的,對(duì)于用201電話卡來上網(wǎng)的情況,可以設(shè)為“201,,,賬號(hào),密碼#,,isp號(hào)碼#”(其中“,”表示停頓一段時(shí)間(以等待確認(rèn)賬號(hào),密碼等),你可以根據(jù)自己所在位置的線路狀況自行調(diào)節(jié)。 szcallbacknumber,szdomain:設(shè)為空串“”即可。 szusername,szpassword:登錄用戶名和密碼。如169公用賬號(hào)guest,guest。
  其他成員不必設(shè)置。
  dwnotifiertype:指定是由窗口還是由回調(diào)函數(shù)來處理確認(rèn)消息。通過確認(rèn)消息我們可以得到rasdial過程的當(dāng)前狀態(tài)。如“正在打開段口”,“正在驗(yàn)證用戶名和密碼”等。也可設(shè)為null。 dwnotifier:指定處理確認(rèn)消息的窗口或回調(diào)函數(shù)。也可設(shè)為null。
  lphrasconn:指向一個(gè)類型為hrasconn的變量。在調(diào)用rasdial前必須指定為null,rasdial若成功返回,則將ras連接的句柄存放于它所指向的變量中。我們也可以通過此句柄來斷開連接。
  只要在程序中適當(dāng)位置調(diào)用rasdial函數(shù)即可建立連接。
  2. 理確認(rèn)消息以得到撥號(hào)過程的當(dāng)前狀態(tài)。
  我們以指定窗口來處理確認(rèn)消息為例說明如何得到撥號(hào)過程的當(dāng)前狀態(tài)。
  在處理確認(rèn)消息的對(duì)話框類(或視圖類等)的實(shí)現(xiàn)代碼中加入:
  const uint wm_rasevent = ::registerwindowmessagea(rasdialevent);
  在message map中手工加入消息映射:(****是你定義的對(duì)話框類名稱)
  begin_message_map(****, cdialog)
  file://afx_msg_map(****)
  ……
  on_registered_message(wm_rasevent, onrasdialevent)(<-加入此句)
  file://afx_msg_map
  end_message_map()
  加入成員函數(shù)處理消息:
  lresult cdialinfo::onrasdialevent(wparam wp, lparam lp)
  {
  rasconnstate rasstate= (rasconnstate)wp;
  clistbox *info =(clistbox *)getdlgitem(idc_infolist);
  file://用listbox 控件(id為idc-infolist)來顯示狀態(tài))
  switch(rasstate)
  {
  case rascs_openport:
  info→addstring(_t(″打開端口……″));
  break;
  case rascs_portopened:
  info→addstring(_t(″端口已打開.″));
  break;
  case rascs_connectdevice:
  info→addstring(_t(″連接設(shè)備……″));
  break;
  case rascs_deviceconnected:
  info→addstring(_t(″設(shè)備已連接.″));
  break;
  case rascs_authenticate:
  info→addstring(_t(″驗(yàn)證用戶及密碼″));
  break;
  case rascs_authenticated:
  info→addstring(_t(″通過″));
  break;
  case rascs_connected:
  info->addstring(_t(″已連接″));
  reak;
  case rascs_disconnected:
  info->addstring(_t(″連接已斷開″));
  m_hrasconn=null;
  file://可定義類型為hrasconn的成員變量m_hrasconn來保存ras連接的句柄。
  file://在調(diào)用rasdial時(shí)用指向m_hrasconn的指針作為lphrasconn參數(shù)。
  file://既然用m_hrasconn來保存連接句柄,連接斷開后應(yīng)重置為null.
  break;
  default:
  return (lresult)0;
  }
  return (lresult)0;
  }
  3. 斷開連接:
  if (m_hrasconn != null)
  {
  rashangup(m_hrasconn);
  m_hrasconn = null;
  m_ondial=true;
  :sleep(2000);
  }
  注意 :
  你也許注意到了以上代碼中的sleep函數(shù),這里是必需的。需要一定時(shí)間來斷開連接。如果不等待一段時(shí)間,計(jì)算機(jī)有可能無法正常關(guān)閉端口。導(dǎo)致下一次無法撥號(hào),只有重新啟動(dòng)windows才能解決。要預(yù)防此問題也可以調(diào)用rasgetconnectstatus函數(shù),方法如下:
  rasconnstatus rstatus;
  while(rasgetconnectstatus(m_hrasconn,&rstatus)!=error_invalid_handle)

  {
 ?。海簊leep(0);
  }
  4.在以下情況下:
  ① 瀏覽網(wǎng)頁時(shí)有時(shí)會(huì)出現(xiàn)停止響應(yīng),重啟explorer后任務(wù)欄上的連接狀態(tài)圖標(biāo)也許會(huì)消失。
  ② 希望在連接成功后,退出程序,再次執(zhí)行此程序可選擇斷開連接。
  可以調(diào)用rasenumconnection函數(shù)來得到當(dāng)前連接的句柄。
  舉例如下:
  hrasconn hrasconnect;dword dwbufffersize, dwnumofconnections;//緩沖區(qū)大小,連接數(shù)
  lprasconn lprasconn;
  lprasconn = new rasconn[3】;//最多可得到3個(gè)連接句柄,客戶端程序其實(shí)不必設(shè)為3,因連接數(shù)有限,大部分僅一個(gè)連接。
  lprasconn[0】.dwsize = sizeof(rasconn);
  dwbufffersize = 32* sizeof(rasconn);//求出由3個(gè)rasconn結(jié)構(gòu)構(gòu)成的緩沖區(qū)大小
  rasenumconnections(lpras conn, &dw buffer size, &dw numof connections);//此函數(shù)若成功則返回零。
  for(dword i=0; i   {
  hrasconnect = lprasconn[i】.hrasconn;//rasconn結(jié)構(gòu)的hrasconn成員為ras連接句柄
   rashangup(hrasconnect);
   ::sleep(2000);
  }
  delete [】 lprasconn;
  在windows 98,visual c++ 6.0下調(diào)試通過。
  這樣,一個(gè)實(shí)現(xiàn)基本撥號(hào)上網(wǎng)功能的程序就完成了。如果你要了解更多有關(guān)情況或服務(wù)器端程序設(shè)計(jì),可以參考msdn→platform sdk→networking and distributed services→remote access service的有關(guān)內(nèi)容
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


華麗的分割線


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

背景:代替手工自動(dòng)進(jìn)行PPPOE撥號(hào)

相關(guān)知識(shí):

主要使用的函數(shù):

The RasDial function establishes a RAS connection between a RAS client and a RAS server. The connection data includes callback and user-authentication information

DWORD RasDial(
__in LPRASDIALEXTENSIONS lpRasDialExtensions,
__in LPCTSTR lpszPhonebook,
__in LPRASDIALPARAMS lpRasDialParams,
__in DWORD dwNotifierType,
__in LPVOID lpvNotifier,
__in LPHRASCONN lphRasConn
);

Return Value

If the function succeeds, the return value is ERROR_SUCCESS and a handle to the RAS connection is returned in the variable pointed to by lphRasConn .

If the function fails, the return value is from Routing and Remote Access Error Codes or Winerror.h.

 

更多消息請(qǐng)查看 :

http://msdn.microsoft.com/en-us/library/aa377004(VS.85).aspx

 

 

    RASDIALPARAMS  ms;
    RASDIALPARAMS params;
    HRASCONN handle=NULL;   

    memset(&ms, '/0', sizeof(params));
    params.dwSize=sizeof(RASDIALPARAMS);

    CString entryname;
    CString tmp;
    tmp.Format("%d", i);
    entryname="UE"+tmp;//需要撥號(hào)的名稱,也就是建立的寬帶連接的名稱,如UE0
    strcpy(params.szEntryName,entryname);

    strcpy(params.szPhoneNumber,"");
    strcpy(params.szCallbackNumber,"");

    strcpy(params.szUserName,"tm500");  //用戶名
    strcpy(params.szPassword, "tm500");  //密碼
    strcpy(params.szDomain,  ""); 

    Message +="/n"+entryname+"dailying up ......";
    UpdateData(TRUE);

   //指定的撥號(hào)連接。

    int a =RasDial(NULL, NULL, &params, NULL, NULL, &handle);
    if (a!=ERROR_SUCCESS)
    {
        MessageBox("正在撥打的計(jì)算機(jī)沒有應(yīng)答,稍后請(qǐng)?jiān)僭?);

        Message +="/n"+entryname+"dailying up failed....../n";
        UpdateData(TRUE);

        DWORD off=RasHangUp(handle);

        //SendMessage(WM_CLOSE);
         if (off==0)
        {
         MessageBox("連接已斷開");
         //printf("連接已斷開.../n");
        }
         else{
        //printf("斷開連接出錯(cuò).../n");
          MessageBox("斷開連接出錯(cuò).");
        }
    }







C++ 撥號(hào)函數(shù)演示

  1. /*********************************/ 
  2. //code By PE_luck  
  3.  
  4. //百度:http://zhidao.baidu.com/question/73758972.html 
  5.  
  6. //2008-10-31  
  7.  
  8. /*********************************/  
  9.  
  10. #include <windows.h> 
  11. #include <stdio.h> 
  12. #include <Ras.h> 
  13. #pragma comment(lib,"rasapi32.lib")  
  14.  
  15. int main(int argc,char *argv[]) 
  16. printf("UserName:");  
  17. char user[100]={0}; 
  18. scanf("%s",user); 
  19. printf("PassWord:"); 
  20. char pass[100]={0}; 
  21. scanf("%s",pass);  
  22.  
  23. //如果想自動(dòng)請(qǐng)將上面的代碼直接替換成你的用戶名和密碼  
  24.  
  25.     RASDIALPARAMSA rdParams; 
  26.     rdParams.dwSize=sizeof(RASDIALPARAMSA); 
  27. strcpy(rdParams.szEntryName,"寬帶連接"); //連接名稱是你的撥號(hào)名稱 
  28. rdParams.szPhoneNumber[0]='\0'
  29.     rdParams.szCallbackNumber[0]='\0'
  30.     strcpy(rdParams.szUserName,user); 
  31. strcpy(rdParams.szPassword,pass); 
  32.     rdParams.szDomain[0]='\0'
  33.     HRASCONN hRscon=NULL; 
  34. DWORD retn= RasDialA(NULL,NULL,&rdParams,0L,NULL,&hRscon);  
  35.  
  36. if (retn==0) 
  37.    printf("已經(jīng)連接上...\n"); 
  38.    //斷開函數(shù) 
  39.    /* 
  40.    DWORD off= RasHangUp(&hRscon); 
  41.    if (off==0) 
  42.    { 
  43.    printf("連接已斷開...\n"); 
  44.    }else 
  45.    printf("斷開連接出錯(cuò)...\n"); 
  46.    */ 
  47.    //具體的細(xì)節(jié)慢慢擴(kuò)充吧...僅僅演示一下... 
  48.    return 0; 
  49. printf("連接出錯(cuò)...\n"); 
  50. return 0; 
posted on 2013-03-17 19:51 聶文龍 閱讀(5526) 評(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>
            日韩视频在线一区二区| 欧美在线啊v一区| 国产久一道中文一区| 亚洲欧美视频| 日韩视频第一页| 亚洲精品欧美在线| 亚洲高清资源综合久久精品| 亚洲一区日韩| 亚欧成人在线| 先锋资源久久| 午夜精品美女久久久久av福利| 亚洲在线一区| 亚洲欧美制服另类日韩| 久久成人综合视频| 一区二区91| 西瓜成人精品人成网站| 亚洲一区二区三区免费观看 | 一本色道久久综合亚洲精品高清 | 欧美性猛交99久久久久99按摩| 欧美色中文字幕| 国产精品丝袜白浆摸在线| 国产精品区二区三区日本| 狠狠久久婷婷| 99re成人精品视频| 亚洲二区精品| 亚洲午夜电影| 亚洲欧洲免费视频| 一区二区电影免费观看| 亚洲欧美国产制服动漫| 欧美大片在线看免费观看| 亚洲激精日韩激精欧美精品| 99re6热只有精品免费观看| 久久九九电影| 欧美日韩一区在线播放| 久久久一本精品99久久精品66| 久久天天躁狠狠躁夜夜爽蜜月| 欧美不卡视频一区| 国产中文一区| 亚洲小视频在线观看| 久久手机精品视频| 亚洲欧美日韩综合aⅴ视频| 久久一区中文字幕| 欧美日韩三级在线| 日韩视频国产视频| 久久久久久91香蕉国产| 亚洲精品久久视频| 久久久99精品免费观看不卡| 欧美激情精品久久久久久黑人| 国产亚洲一区二区三区在线播放| 亚洲乱码久久| 一区二区三区波多野结衣在线观看| 午夜精品区一区二区三| 欧美一区二区三区四区视频| 欧美精品18+| 国产精品国产精品| 中日韩男男gay无套| 久久女同互慰一区二区三区| 亚洲毛片在线观看.| 久久精品国产视频| 国产精品老牛| 先锋a资源在线看亚洲| 亚洲精品老司机| 久久深夜福利| 在线播放不卡| 久久午夜色播影院免费高清| 久久精品国产精品亚洲精品| 亚洲欧美国产视频| 国产精品国产三级国产普通话三级 | 欧美日本视频在线| 99re在线精品| 欧美激情中文字幕一区二区 | 欧美日韩在线视频一区二区| 亚洲国产va精品久久久不卡综合| 国产女主播一区| 久久久久成人网| 亚洲一区二区网站| 国产综合自拍| 狂野欧美性猛交xxxx巴西| 99国产精品国产精品毛片| 欧美特黄视频| 亚洲在线日韩| 久久国产免费| 狠狠色狠狠色综合人人| 久久全国免费视频| 欧美国产日韩一区二区在线观看| 亚洲黄网站黄| 亚洲国产aⅴ天堂久久| 欧美吻胸吃奶大尺度电影| 亚洲午夜女主播在线直播| 亚洲欧美清纯在线制服| 国产一区二区三区的电影| 久久久久久午夜| 欧美精品免费观看二区| 亚洲视频在线观看免费| 美日韩免费视频| 欧美网站在线观看| 久久激情五月激情| 欧美久久久久久久久| 亚洲免费在线电影| 亚洲天堂网在线观看| 1024亚洲| 亚洲欧洲一区二区在线播放| 一区二区在线观看视频在线观看| 亚洲国产合集| 亚洲欧美激情视频| 国产日韩精品电影| 麻豆精品网站| 国产精品女主播| 免费成人美女女| 欧美男人的天堂| 久久一区二区三区四区| 免费亚洲电影在线| 亚洲欧洲av一区二区三区久久| 欧美制服丝袜第一页| 亚洲黄色高清| 久久激情视频| 一区二区三区四区五区精品| 久久激情综合| 亚洲亚洲精品在线观看| 久久av资源网| 久久经典综合| 欧美日韩免费一区二区三区视频| 中日韩视频在线观看| 欧美成ee人免费视频| 久久aⅴ国产欧美74aaa| 欧美日韩在线一区二区| 欧美77777| 国产欧美日韩视频在线观看 | 99在线热播精品免费| 狠狠久久婷婷| 久久精品一区二区三区不卡| 99热免费精品在线观看| 亚洲欧美一区二区在线观看| 一区二区三区免费网站| 久久亚洲国产精品一区二区| 久久全国免费视频| 国产日本欧美一区二区| 一区二区三区高清不卡| 一区二区三区视频免费在线观看| 久久久久国产一区二区| 一本大道久久精品懂色aⅴ | 麻豆九一精品爱看视频在线观看免费 | 欧美激情精品久久久久久蜜臀| 久久精品国语| 黑人巨大精品欧美一区二区小视频| 亚洲最新在线视频| 99伊人成综合| 欧美午夜精品久久久久久人妖| 欧美激情久久久久| 亚洲美女色禁图| 欧美大片在线看| 91久久国产综合久久蜜月精品 | 伊人成人在线| 久久婷婷国产麻豆91天堂| 美国十次了思思久久精品导航| 国产亚洲精品综合一区91| 久久精品亚洲一区| 牛牛国产精品| 欧美日韩色一区| 激情综合色综合久久综合| 欧美区一区二区三区| 亚洲国产中文字幕在线观看| 欧美一区在线视频| 欧美激情精品| 亚洲人体1000| 欧美日韩中文另类| 99国内精品久久久久久久软件| 亚洲激情精品| 久久久视频精品| 国产精品扒开腿做爽爽爽视频| 国产精品久久| 亚洲国产中文字幕在线观看| 中文日韩电影网站| 亚洲国产精品一区二区久| 亚洲社区在线观看| 性欧美大战久久久久久久免费观看| 亚洲综合二区| 国产精品毛片a∨一区二区三区|国 | 国语自产精品视频在线看抢先版结局| 美女久久一区| 欧美成人精品不卡视频在线观看| 国产精品久久77777| 国产精品免费一区豆花| 91久久夜色精品国产九色| 亚洲一区精品电影| 亚洲福利小视频| **网站欧美大片在线观看| 欧美性大战xxxxx久久久| 亚洲一区二区精品| 久久看片网站| 午夜久久福利| 亚洲国产成人精品女人久久久| 欧美日韩亚洲一区二区三区在线观看| 一区二区三区日韩欧美精品| 欧美在线视频一区二区三区| 亚洲精品美女久久久久| 国产精品久久久久秋霞鲁丝 | 欧美劲爆第一页| 一区二区精品| 亚洲国产精品成人va在线观看|