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

隨筆 - 298  文章 - 377  trackbacks - 0
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(34)

隨筆分類(lèi)

隨筆檔案

文章檔案

相冊(cè)

收藏夾

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

  在Win32 API 函數(shù)中有一組用于實(shí)現(xiàn)遠(yuǎn)程連接服務(wù)RAS 的函數(shù),利用這些函數(shù)通過(guò)編程可以實(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)連接過(guò)程中,回調(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ù)來(lái)處理。

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

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

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

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

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

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

  TCHAR szPassword[PWLEN +1] 用戶(hù)口令。

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

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

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

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

  在VC 中是通過(guò)調(diào)用函數(shù)RasGetProjectionInfo() 來(lái)獲取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 編寫(xiě),并編譯運(yùn)行通過(guò)。完整的源程序清單如下:
// --- -------------
//file name ras.c
// --- -------------
#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ù)
// --- --------------
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ì)話(huà)框失敗!",
   "TITLE",MB_OK);
   return 0;
}
// -----------------
// 對(duì)話(huà)框窗口函數(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 的用戶(hù)名和口令
// -----------------
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;
   // 以下開(kāi)始異步撥叫網(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 -發(fā)生的RAS 事件
// rasconnstate -連接進(jìn)入的狀態(tài)
// dwError   -發(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;
  }
}  

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


華麗的分割線(xiàn)


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

  {
  ::sleep(0);
  }
  4.在以下情況下:
  ① 瀏覽網(wǎng)頁(yè)時(shí)有時(shí)會(huì)出現(xiàn)停止響應(yīng),重啟explorer后任務(wù)欄上的連接狀態(tài)圖標(biāo)也許會(huì)消失。
  ② 希望在連接成功后,退出程序,再次執(zhí)行此程序可選擇斷開(kāi)連接。
  可以調(diào)用rasenumconnection函數(shù)來(lái)得到當(dāng)前連接的句柄。
  舉例如下:
  hrasconn hrasconnect;dword dwbufffersize, dwnumofconnections;//緩沖區(qū)大小,連接數(shù)
  lprasconn lprasconn;
  lprasconn = new rasconn[3】;//最多可得到3個(gè)連接句柄,客戶(hù)端程序其實(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)試通過(guò)。
  這樣,一個(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)容
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


華麗的分割線(xiàn)


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

背景:代替手工自動(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)的名稱(chēng),也就是建立的寬帶連接的名稱(chēng),如UE0
    strcpy(params.szEntryName,entryname);

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

    strcpy(params.szUserName,"tm500");  //用戶(hù)名
    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ī)沒(méi)有應(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("連接已斷開(kāi)");
         //printf("連接已斷開(kāi).../n");
        }
         else{
        //printf("斷開(kāi)連接出錯(cuò).../n");
          MessageBox("斷開(kāi)連接出錯(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)將上面的代碼直接替換成你的用戶(hù)名和密碼  
  24.  
  25.     RASDIALPARAMSA rdParams; 
  26.     rdParams.dwSize=sizeof(RASDIALPARAMSA); 
  27. strcpy(rdParams.szEntryName,"寬帶連接"); //連接名稱(chēng)是你的撥號(hào)名稱(chēng) 
  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.    //斷開(kāi)函數(shù) 
  39.    /* 
  40.    DWORD off= RasHangUp(&hRscon); 
  41.    if (off==0) 
  42.    { 
  43.    printf("連接已斷開(kāi)...\n"); 
  44.    }else 
  45.    printf("斷開(kāi)連接出錯(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)  編輯 收藏 引用 所屬分類(lèi): 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>
            久久青草福利网站| 久久另类ts人妖一区二区| 国产精品久久999| 欧美屁股在线| 欧美久久视频| 欧美日韩亚洲天堂| 国产精品a久久久久| 国产精品一区2区| 国产免费成人在线视频| 国产日产亚洲精品系列| 激情亚洲成人| 亚洲日本理论电影| 亚洲一区二区三区免费观看 | 狠狠狠色丁香婷婷综合激情| 国产一区观看| 亚洲欧洲精品一区二区| 99视频在线观看一区三区| 亚洲永久视频| 久久综合久色欧美综合狠狠| 欧美不卡在线视频| 在线亚洲精品| 久久亚洲高清| 欧美午夜片在线免费观看| 国模 一区 二区 三区| 亚洲国产一区在线| 亚洲视频综合| 欧美刺激性大交免费视频| 一本一本久久a久久精品牛牛影视| 亚洲欧美影院| 欧美日韩系列| 亚洲狠狠婷婷| 久久久99爱| 亚洲国内自拍| 亚洲国产天堂久久国产91| 亚洲欧美日韩区| 免费看av成人| 亚洲夜晚福利在线观看| 欧美精品xxxxbbbb| 韩国av一区二区三区| 中文久久精品| 亚洲黄网站黄| 欧美伊人久久| 国产精品卡一卡二| 99综合在线| 免费在线观看精品| 欧美亚洲三区| 国产毛片精品视频| 亚洲一区二区三区在线视频| 欧美黄色小视频| 久久午夜电影网| 国产手机视频一区二区| 亚洲视频大全| 亚洲社区在线观看| 欧美激情欧美狂野欧美精品| 激情综合久久| 免费短视频成人日韩| 午夜影院日韩| 国产女主播一区| 久久成人18免费观看| 一区二区三区高清在线观看| 欧美人在线视频| 99这里只有精品| 亚洲美洲欧洲综合国产一区| 欧美区日韩区| 亚洲一区二区三区高清| 一本到12不卡视频在线dvd| 欧美精品免费观看二区| 99国产精品久久久久久久久久| 亚洲国产电影| 欧美激情精品久久久久久蜜臀| 亚洲人成小说网站色在线| 亚洲国产综合视频在线观看| 欧美jizz19hd性欧美| 亚洲美女免费精品视频在线观看| 欧美福利一区| 欧美激情区在线播放| 国产精品99久久久久久久久久久久 | 亚洲免费观看在线视频| 欧美电影在线观看| 欧美日韩和欧美的一区二区| 亚洲一级二级| 亚洲综合导航| 亚洲电影免费观看高清完整版在线| 欧美99在线视频观看| 欧美 日韩 国产 一区| 亚洲视频你懂的| 午夜精品久久久久久久99黑人| 国产一区二区三区在线观看网站 | 欧美紧缚bdsm在线视频| 亚洲性夜色噜噜噜7777| 欧美一二三区精品| 亚洲第一在线综合网站| 91久久国产精品91久久性色| 国产精品久久久久毛片大屁完整版 | 久久综合狠狠综合久久激情| 亚洲精品在线视频| 亚洲欧美综合国产精品一区| 精品av久久707| 亚洲三级性片| 国产精品区一区二区三| 理论片一区二区在线| 欧美精品xxxxbbbb| 久久精品一区二区三区不卡牛牛| 欧美成人视屏| 久久成人精品一区二区三区| 免费观看一级特黄欧美大片| 午夜日韩电影| 欧美成人乱码一区二区三区| 性色一区二区| 欧美日韩国产在线播放| 久久亚洲午夜电影| 国产精品成人av性教育| 欧美激情小视频| 国产日韩欧美高清免费| 亚洲精品视频二区| 亚洲国产成人在线播放| 亚洲伊人色欲综合网| 99国产精品久久久| 美女成人午夜| 久久久99久久精品女同性| 欧美日韩精品久久久| 欧美 日韩 国产 一区| 国产免费一区二区三区香蕉精| 亚洲欧洲另类| 亚洲国产精品999| 欧美一级理论片| 亚洲私人影院| 欧美精选一区| 亚洲欧洲精品天堂一级| 亚洲欧洲日本国产| 老司机一区二区| 免费在线欧美黄色| 狠狠爱www人成狠狠爱综合网| 亚洲永久在线| 欧美一区观看| 国产精品日韩欧美综合| av不卡免费看| 亚洲尤物在线| 国产精品免费电影| 亚洲视频在线视频| 香蕉乱码成人久久天堂爱免费| 欧美视频精品在线| 99国内精品久久| 亚洲砖区区免费| 国产精品嫩草99av在线| 亚洲香蕉伊综合在人在线视看| 亚洲欧美日韩国产| 亚洲国产精品久久人人爱蜜臀| 国产精品国色综合久久| 欧美本精品男人aⅴ天堂| 在线免费不卡视频| 欧美va亚洲va香蕉在线| 亚洲国产成人tv| 日韩视频免费观看高清在线视频| 欧美日韩999| 亚洲美女av黄| 午夜精品一区二区三区四区| 国产亚洲一区精品| 久久久久久9999| 亚洲国产精品v| 一区二区三区日韩| 国产欧美一区二区精品忘忧草| 久久精品一区二区三区四区| 久久久久一本一区二区青青蜜月| 国内精品久久久久影院色| 久久免费视频一区| 亚洲精品永久免费| 久久aⅴ国产欧美74aaa| 在线日韩视频| 国产精品国产三级国产专播品爱网| 亚洲在线网站| 免费看的黄色欧美网站| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲欧洲精品一区二区三区 | 一区二区三区亚洲| 欧美另类高清视频在线| 亚洲网友自拍| 欧美福利在线| 亚洲欧美日韩在线观看a三区| 国语自产精品视频在线看一大j8| 欧美人与禽性xxxxx杂性| 欧美夜福利tv在线| 亚洲人成在线观看一区二区| 久久精品国产一区二区三区免费看| 在线看无码的免费网站| 国产精品久久久久久久久婷婷 | 国产精品初高中精品久久| 久久精品国产亚洲5555| 宅男噜噜噜66国产日韩在线观看| 浪潮色综合久久天堂| 亚洲午夜一区| 亚洲伦理久久| 在线精品观看| 国产一区二三区| 国产精品欧美风情| 欧美日韩亚洲国产一区| 欧美高清在线观看| 蜜臀av在线播放一区二区三区| 欧美在线精品免播放器视频| 亚洲一区二区黄|