遠程訪問服務(RAS)是WindowsNT操作系統提供的系統服務之一,通過電話線可以使單獨的計算機接入網絡,或通過兩個RAS對撥使兩個局域網互連。此項服務的功能可以使遠程的計算機端點以較低的費用同網絡連接。
由於WindowsNT操作系統的大量使用,遠程訪問服務功能也被廣泛應用,在許多具體的應用程序中,均已通過遠程訪問服務來實現對遠程的資源共享等功能。連通遠程訪問服務,只要從遠程客戶機撥通撥號網絡就可以了,執行掛斷就結束連接,鼠標操作Windows95中的撥號網絡可以直接撥通和掛斷。但有些時候我們希望在應用程序中RAS撥號和掛斷對用戶不可見,那麼就需要相應的程序控制來實現RAS撥通和掛斷。
Windows95提供了API函數RasDial,調用系統中建好的撥號網絡連接,完成RAS撥號,同時還提供了API函數RasHangUp斷開連接。RasDial的原形如下:
DWORD RasDial(LPRASDIALEXTENSIONS IpRasDialExtensions,LPTSTR IpszPhonebook,LPRASDIALPARAMS IpRasDialParams,DWORD dwNotifierType,LPVOID IpvNotifier,LPHRASCONN IphRasConn)
此函數的第3個參數為指向RASDIALPARAMS型結構體的指針,它提供了配置RAS撥號的參數;第5個參數為撥號完成後執行的回調函數;第6個參數是LPHRASCONN型的指針,撥號連接建立好之後將返回此連接的句柄;其他3個參數為NULL即可。函數調用如果成功將返回零,否則返回錯誤代碼,此錯誤代碼的含義可以在頭文件Raserror.h中查到。
RASDIALPARAMS型結構體包含7個數據成員:dwSize、szEntryName、szPhoneNumber、szCallbackNumber、szUserName、szPassword和szDomain,它們的作用如右表所示。
要掛斷已撥通的連接使用RasHangUp函數,需要的參數是此連接的連接句柄。下面介紹使用VC完成RAS撥號的一個例子,其中我們假設RAS端NT服務器連接的內部分機的電話號碼是"22",具體步驟如下:
1.配置好調制解調器,然後在Windows95的撥號網絡中建立一個名為dial的連接。
2.建立一個VisualC的應用框架,在Setting中為應用程序加入Rasapi32.lib靜態庫。
3.新建一個對話框,在其上加兩個按鈕,一個用於撥通,一個用於掛斷。
4.在鼠標點擊撥通按鈕的響應函數中加入以下代碼:
RASDIALPARAMS rdParams;
DWORD dwRet;
rdParams.dwSize=sizeof(RASDIALPARAMS);
strcpy(rdParams.szEntryName,"dial");
strcpy(rdParams.szPhoneNumber,"22");
strcpy(rdParams.szCallbackNumber,"*");
strcpy(rdParams.szUserName,"dial");
rdParams.szPassword[0]='\0';
strcpy(rdParams.szDomain,"dial");
hRasConn=NULL;
dwRet=RasDial(NULL,NULL,&rdParams,0L,(RASDIALFUNC)RasDialFunc,&hRasConn);
if(dwRet!=0)
{
//dealwitherror…
}
5.在此響應函數之前加入如下代碼:
VOID WINAPI RasDialFunc(UINT unMsg,RASCONNSTATE rasconnstate,DWORD dwError)
{
}
6.在鼠標點擊掛斷按鈕的響應函數中加入如下代碼:
DWORD dwRet;
dwRet=RasHangUp(hRasConn);
7.最後編譯執行程序。
RASDIALPARAMS型結構體數據成員表成員名類型功能
DwSize DWORD 結構體的大小
SzEntryName TCHAR數組 調用的撥號連接名稱
SzPhoneNumber TCHAR數組 撥打的電話號碼
SzCallbackNumer TCHAR數組 要求回撥的電話號碼
SzUserName TCHAR數組 向RAS登錄的用戶名
SzPassord TCHAR數組 向RAS登錄的口令
SzDomain TCHAR數組 向RAS登錄的域