撥號上網程式

2021-03-31 12:50:47 字數 3165 閱讀 3484

一般使用者的撥號上網,利用的是windows的remote access service(ras,遠端訪問服務)。

下面介紹一下其在visual c++下的實現。

visual c++為我們提供了包含ras api宣告的「ras.h″標頭檔案。要在程式中實現撥號

上網功能,其大致過程如下:

1. 利用modem撥號進行連線,應使用rasdial函式。

其宣告如下:

dword ras dial(lprasdialextensions lpras dialextensions,lpctstr lpszphoneboo

k,lprasdialparams lp ras dialparams,dword dw notifier type,lpvoid lpv notifier,

lphrasconn lph ras conn )

引數說明:

lprasdialextensions和lpszphonebook:僅在windows nt下有效,在windows 95下,這

兩個引數被忽略。

lprasdialparams:這個引數很重要,它指向乙個rasdialparams結構,該結構包含以下

幾個成員:

dwsize:應設定為sizeof(rasdialparams);

szentryname和szphonenumber:這兩個引數有聯絡,szentryname可以指定要建立的連線

,比方說「我的連線」等等,這是處理使用者已經在「撥號網路」裡建立的連線的。這時,mo

dem將撥打你在「我的連線」中設定的isp號碼,此時szphonenumber成員設為空字串「」即

可;如果你要在程式中自行指定要撥打的isp號碼的話,szentryname可以設定為空字串「

」,此時應設定szphonenumber為你的isp號碼(169,663等),特別的,對於用201**卡來

上網的情況,可以設為「201,,,賬號,密碼#,,isp號碼#」(其中「,」表示停頓一段時

間(以等待確認賬號,密碼等),你可以根據自己所在位置的線路狀況自行調節。

szcallbacknumber,szdomain:設為空串「」即可。

szusername,szpassword:登入使用者名稱和密碼。如169公用賬號guest,guest。

其他成員不必設定。

dwnotifiertype:指定是由視窗還是由**函式來處理確認訊息。通過確認訊息我們可

以得到rasdial過程的當前狀態。如「正在開啟段口」,「正在驗證使用者名稱和密碼」等。也可

設為null。

dwnotifier:指定處理確認訊息的視窗或**函式。也可設為null。

lphrasconn:指向乙個型別為hrasconn的變數。在呼叫rasdial前必須指定為null,ras

dial若成功返回,則將ras連線的控制代碼存放於它所指向的變數中。我們也可以通過此控制代碼來斷

開連線。

只要在程式中適當位置呼叫rasdial函式即可建立連線。

2. 理確認訊息以得到撥號過程的當前狀態。

我們以指定視窗來處理確認訊息為例說明如何得到撥號過程的當前狀態。

在處理確認訊息的對話方塊類(或檢視類等)的實現**中加入:

const uint wm_rasevent = ::registerwindowmessagea(rasdialevent);

在message map中手工加入訊息對映:(****是你定義的對話方塊類名稱)

begin_message_map(****, cdialog)

//afx_msg_map(****)

……

on_registered_message(wm_rasevent, onrasdialevent)(<-加入此句)

//afx_msg_map

end_message_map()

加入成員函式處理訊息:

lresult cdialinfo::onrasdialevent(wparam wp, lparam lp)

return (lresult)0; }

3. 斷開連線:

if (m_hrasconn != null)

注意 :

你也許注意到了以上**中的sleep函式,這裡是必需的。需要一定時間來斷開連線。如

果不等待一段時間,計算機有可能無法正常關閉埠。導致下一次無法撥號,只有重新啟動

windows才能解決。要預防此問題也可以呼叫rasgetconnectstatus函式,方法如下:

rasconnstatus rstatus;

while(rasgetconnectstatus(m_hrasconn,&rstatus)!=error_invalid_handle)

4.在以下情況下:

① 瀏覽網頁時有時會出現停止響應,重啟explorer後工作列上的連線狀態圖示也許會消

失。

② 希望在連線成功後,退出程式,再次執行此程式可選擇斷開連線。

可以呼叫rasenumconnection函式來得到當前連線的控制代碼。

舉例如下:

hrasconn hrasconnect;dword dwbufffersize, dwnumofconnections;//緩衝區大小,連

接數

lprasconn lprasconn;

lprasconn = new rasconn[3】;//最多可得到3個連線控制代碼,客戶端程式其實不必設為

3,因連線數有限,大部分僅乙個連線。

lprasconn[0】.dwsize = sizeof(rasconn);

dwbufffersize = 32* sizeof(rasconn);//求出由3個rasconn結構構成的緩衝區大小

rasenumconnections(lpras conn, &dw buffer size, &dw numof connections);//

此函式若成功則返回零。

for(dword i=0; i   

delete [】 lprasconn;

在windows 98,visual c++ 6.0下除錯通過。

器端程式設計,可以參考msdn→platform sdk→***working and distributed services→r

emote access service的有關內容

linux PPPOE撥號上網設定

1.開啟應用程式選單,依次選擇附件 終端。2.在彈出終端視窗後,輸sudo pppoeconf,輸入完成後回車。3.然後會提示您輸入當前ubuntu 管理員使用者的密碼,輸入完成後回車。詢問你的網路裝置,一般選擇是,進行檢測,然後一直選擇是。4.之後會提示您輸入您的adsl 使用者名稱 也就是帳號 ...

華為PPPoe撥號上網實驗

華為配置pppoe 配置裝置名字 配置pppoe客戶的使用者名稱和密碼 local user xiaoming service type ppp 配置使用者的接入型別為ppp inte ce virtual template0 進入虛模板介面 ppp authentication mode chap...

撥號上網 熱點分享問題

關於撥號上網時,熱點分享問題 這個問題是我搬到了新住處,由於網路是被包攬的,所以我自己也無法去拉網線。只能用房東提供的寬頻進行撥號上網。我們知道,我們筆記本有線連線上網時候,一般可以分享熱點,然後手機等其他裝置就可以通過連線熱點進行上網,但是在撥號上網居然無法分享熱點,分享熱點的功能選項是灰色的,點...