溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Windows CE下如何實現(xiàn)撥號上網(wǎng)

發(fā)布時間:2021-12-01 18:02:36 來源:億速云 閱讀:138 作者:柒染 欄目:互聯(lián)網(wǎng)科技

今天就跟大家聊聊有關 在Windows CE下如何實現(xiàn)撥號上網(wǎng) ,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

目前基于Windows CE的產(chǎn)品大多數(shù)具有上網(wǎng)功能,能夠連接到Internet實現(xiàn)瀏覽網(wǎng)頁、收發(fā)郵件等基本功能。要實現(xiàn)更多的功能取決于連接Internet的速度,而速度取決于連接Internet的方式。連接Internet的方式分為兩種:有線和無線。事實上大多數(shù)產(chǎn)品還是采用無線上網(wǎng)方式。

  基于Windows mobile的Pocket PC和Smart phone能夠輕松實現(xiàn)上網(wǎng)功能。這兩種產(chǎn)品的軟件開發(fā)人員可以不必過多考慮如何實現(xiàn)撥號上網(wǎng)。而對于采用定制Windows CE內(nèi)核的產(chǎn)品而言,相關的軟件開發(fā)人員必須自己實現(xiàn)撥號上網(wǎng)。幸運的是Windows CE的SDK中包含了撥號上網(wǎng)的支持,使軟件開發(fā)人員的工作大大減輕。

  撥號上網(wǎng)的硬件設備可以是獨立的帶內(nèi)置調(diào)制解調(diào)器和具有GPRS功能的手機,也可以是嵌入到主板中帶有同樣功能的手機芯片。具體是什么并不重要,因為Windows CE包含的撥號上網(wǎng)模塊采用標準的AT命令集與硬件設備通信。軟件開發(fā)人員可以直接利用CE提供的接口函數(shù)來控制整個撥號過程,直到斷開連接。

  Windows CE.NET 提供了一個被稱為RAS(Remote Access Service)的服務,通過RAS基于Windows CE的產(chǎn)品可以通過WAN(廣域網(wǎng))或VPN(虛擬個人網(wǎng)絡)連接到遠程服務器上。調(diào)用RAS的應用程序通常在客戶機上執(zhí)行,通過電話網(wǎng)連接到遠程服務器,這種連接使用兩種標準的遠程訪問協(xié)議:PPP點對點協(xié)議和SLIP串行線路Internet協(xié)議。RAS結構如圖1所示。從圖中可以看出RAS處于ISO/OSI模型的上層,下層的TAPI(電話API)調(diào)用Unimodem,Unimodem是通用的調(diào)制解調(diào)器驅(qū)動程序,它調(diào)用串口API實現(xiàn)與調(diào)制解調(diào)設備的通信。

在Windows CE下如何實現(xiàn)撥號上網(wǎng)    
圖1 RAS服務結構圖    


  Windows CE.NET下RAS所具備的所有功能同PC下的相似,同樣支持電話本、撥號控制腳本。不同的是CE下的RAS的電話本是存放在注冊表中。這些都是次要的功能,在此不給予講述。實現(xiàn)撥號必須調(diào)用的函數(shù)如下:

函數(shù)描述
RasDial建立RAS連接
RasEnumEntries列出注冊表中所有撥號記錄
RasGetConnectStatus獲得指定遠程訪問連接的當前狀態(tài)。
RasGetEntryDialParams獲得指定的上次成功撥號記錄的連接數(shù)據(jù)(參數(shù))
RasSetEntryDialParams設置指定的上次成功撥號記錄的連接數(shù)據(jù)(參數(shù))
RasGetEntryProperties獲得撥號記錄屬性
RasSetEntryProperties設置撥號記錄屬性
RasHangUp終止RAS連接


  基于Windows CE的產(chǎn)品在設計上有的能夠在斷電前保存注冊表數(shù)據(jù),有的不能夠。對于不能夠保存注冊表數(shù)據(jù)的產(chǎn)品,采用電話本來撥號是行不通的。只能讓用戶每次啟動后重新輸入撥號數(shù)據(jù),或者將數(shù)據(jù)保存到永久存儲器上,在下一次撥號程序啟動時先讀取撥號數(shù)據(jù)。

  整個撥號狀態(tài)分為同步和異步兩種。同步狀態(tài)下RasDial函數(shù)直到建立連接或者發(fā)生錯誤不能繼續(xù)工作時才返回。同步模式的缺點是客戶不能收到連接操作的當前狀態(tài)和進度信息。但是仍然有解決方法,辦法是創(chuàng)建一個新的線程來進行撥號(調(diào)用RasDial),另外創(chuàng)建一個新的線程每隔一段時間查詢當前撥號狀態(tài)(調(diào)用RasGetConnectStatus)。相比較異步模式在得到當前撥號狀態(tài)方面要容易的多。異步模式下RasDial函數(shù)會立刻返回,接著可以調(diào)用RasGetConnectStatus得到當前撥號狀態(tài)。

RasGetEntryDialParams和RasGetEntryProperties兩個函數(shù)得到的是不同方面的數(shù)據(jù)。在此做一說明:CE為DialPrarms撥號參數(shù)定義了結構體RASDIALPARAMS。它包括撥號記錄名、電話號碼、用戶名、密碼、域名等。而對于Properties屬性數(shù)據(jù),CE定義了結構體RASENTRY。它包括連接選項、國家碼、區(qū)域碼、本地電話號,可以指定本地IP地址、遠程DNS服務器IP、遠程WINS服務器IP等,還可以指定連接控制腳本文件路徑、采用的協(xié)議、調(diào)制解調(diào)器類型及名稱等。在撥號前一定要設置要這些參數(shù),不過不必每個參數(shù)都設置。最簡單的辦法是得到系統(tǒng)默認的所有參數(shù)。調(diào)用代碼如下:

DWORD dwReturn;
dwReturn = RasGetEntryProperties(NULL, L"", &RasEntry, &dwSize, NULL, NULL);
if(dwReturn != 0)
{
////不能得到系統(tǒng)撥號參數(shù)
return;
}


  得到系統(tǒng)默認的參數(shù)后再加以修改,這樣避免了設置錯誤的參數(shù),而且大多數(shù)參數(shù)不用我們設置。關于撥號上網(wǎng)就講這么多,如果讀者有疑問或者遇到困難可以發(fā)郵件給我,如果有時間我將回復。

看完上述內(nèi)容,你們對 在Windows CE下如何實現(xiàn)撥號上網(wǎng) 有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI