24h購物| | PChome| 登入
2007-07-07 13:13:03 | 人氣298| 回應0 | 上一篇 | 下一篇
推薦 0 收藏 0 轉貼0 訂閱站台

Windows CE 的 撥號網路



 目前基于Windows CE的產品大多數具有上網功能,能夠連接到Internet實現瀏覽網頁、收發郵件等基本功能。要實現更多的功能取決于連接Internet的速度,而速度取決于連接Internet的模式。連接Internet的模式分為兩種︰有線和無線。事實上大多數產品還是採用無線上網模式。
  基于Windows mobilePocket PCSmart phone能夠輕鬆實現上網功能。這兩種產品的軟體開發人員可以不必過多考慮如何實現撥號上網。而對于採用定製Windows CE內核的產品而言,相關的軟體開發人員必須自己實現撥號上網。幸運的是Windows CESDK中包含了撥號上網的支持,使軟體開發人員的工作大大減輕。
  撥號上網的硬體設備可以是獨立的帶內置數據機和具有GPRS功能的手機,也可以是嵌入到主板中帶有同樣功能的手機晶片。具體是什麼並不重要,因為Windows CE包含的撥號上網模塊採用標準的AT命令集與硬體設備通信。軟體開發人員可以直接利用CE提供的界面函數來控制整個撥號過程,直到斷開連接。
  Windows CE.NET 提供了一個被稱為RASRemote Access Service)的服務,透過RAS基于Windows CE的產品可以透過WAN(廣域網)或VPN(虛擬個人網路)連接到遠程伺服器上。調用RAS的應用程式通常在客戶機上執行,透過電話網連接到遠程伺服器,這種連接使用兩種標準的遠程訪問協議︰PPP點對點協議和SLIP串行線路Internet協議。RAS架構如圖1所示。從圖中可以看出RAS處于ISO/OSI模型的上層,下層的TAPI(電話API)調用UnimodemUnimodem是通用的數據機驅動程式,它調用串口API實現與調製解調設備的通信。


1 RAS服务结构图

  Windows CE.NETRAS所具备的所有功能同PC下的相似,同样支持电话本、拨号控制脚本。不同的是CE下的RAS的電話本是存放在註冊表中。這些都是次要的功能,在此不給予講述。實現撥號必須調用的函數如下︰

函數

RasDial

建立RAS連接

RasEnumEntries

列出註冊表中所有撥號記錄

RasGetConnectStatus

獲得指定遠程訪問連接的當前狀態。

RasGetEntryDialParams

獲得指定的上次成功撥號記錄的連接數據(參數)

RasSetEntryDialParams

設置指定的上次成功撥號記錄的連接數據(參數)

RasGetEntryProperties

獲得撥號記錄屬性

RasSetEntryProperties

設置撥號記錄屬性

RasHangUp

終止RAS連接

基于Windows CE的產品在設計上有的能夠在斷電前保存註冊表數據,有的不能夠。對于不能夠保存註冊表數據的產品,採用電話本來撥號是行不通的。只能讓用戶每次啟動后重新輸入撥號數據,或者將數據保存到永久存儲器上,在下一次撥號程式啟動時先讀取撥號數據。
  整個撥號狀態分為同步和異步兩種。同步狀態下RasDial函數直到建立連接或者發生錯誤不能繼續工作時才返回。同步模式的缺點是客戶不能收到連接操作的當前狀態和進度訊息。但是仍然有解決方法,辦法是創建一個新的線程來進行撥號(調用RasDial),另外創建一個新的線程每隔一段時間查詢當前撥號狀態(調用RasGetConnectStatus)。相比較異步模式在得到當前撥號狀態方面要容易的多。異步模式下RasDial函數會立刻返回,接著可以調用RasGetConnectStatus得到當前撥號狀態。
  RasGetEntryDialParamsRasGetEntryProperties兩個函數得到的是不同方面的數據。在此做一說明︰CEDialPrarms撥號參數定義了架構體RASDIALPARAMS。它包括撥號記錄名、電話號碼、用戶名、密碼、域名等。而對于Properties屬性數據,CE定義了架構體RASENTRY。它包括連接選項、國家碼、區域碼、本地電話號,可以指定本地IP位址、遠程DNS伺服器IP、遠程WINS伺服器IP等,還可以指定連接控制腳本文件路徑、採用的協議、數據機類型及名稱等。在撥號前一定要設置要這些參數,不過不必每個參數都設置。最簡單的辦法是得到系統默認的所有參數。調用代碼如下︰

DWORD dwReturn;

dwReturn = RasGetEntryProperties(NULL, L"", &RasEntry, &dwSize, NULL, NULL);

if(dwReturn != 0)   

{                 

                    ////不能得到系統撥號參數

                    return;         

}

  得到系統默認的參數后再加以修改,這樣避免了設置錯誤的參數,而且大多數參數不用我們設置。關於撥號上網就講這么多,如果讀者有疑問或者遇到困難可以發郵件給我,如果有時間我將回複。
  另外關於PlatformBuilder,很多人發郵件給我希望我能回答他們關於PB的問題。在這裡我向讀者們宣佈,關於PBEVC的書我和我的同事正在寫,預計9月份就能夠完成。這本書詳細介紹了PB(包括驅動)和EVC的使用,還有一些開發實例。
PB和驅動部分都是我的同事寫的,他們很有經驗。

 

台長: Kenny
人氣(298) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 教育學習(進修、留學、學術研究、教育概況) | 個人分類: 程式設計 |
此分類下一篇:VB6.0 中連接加密的Access資料庫
此分類上一篇:WinSock控件的使用

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文