?? 配置ppc模擬器網(wǎng)絡(luò)環(huán)境.txt
字號(hào):
配置PPC模擬器網(wǎng)絡(luò)環(huán)境,調(diào)試TCP/UDP套接字程序
最近學(xué)習(xí)PPC下的Socket編程,基本是按以下步驟進(jìn)行程序調(diào)試
1、在Windows XP下編寫(xiě)服務(wù)器端/客戶端,直至測(cè)試程序通過(guò)。通過(guò)這個(gè)過(guò)程驗(yàn)證winsock的使用(API和MFC的包裝類(lèi)),確保語(yǔ)句代碼不出錯(cuò),當(dāng)然選用的是wince4.2兼容的API(比如只使用seledt I/O模型)。調(diào)試時(shí)將開(kāi)發(fā)機(jī)同時(shí)作為服務(wù)器和客戶端進(jìn)行測(cè)試,也使用Virtual PC模擬一個(gè)具有固定ip的客戶機(jī)進(jìn)行調(diào)試。
2、客戶端移植到win ce,與XP下的服務(wù)器端進(jìn)行聯(lián)合測(cè)試,直至程序通過(guò)。win ce環(huán)境使用的PPC模擬器,主機(jī)是內(nèi)網(wǎng)IP,外網(wǎng)無(wú)法訪問(wèn)。
使用TCP套接字的程序順利通過(guò)了驗(yàn)證,第1步和第2步的運(yùn)行都正常,這個(gè)過(guò)程不需要對(duì)PPC模擬器的環(huán)境進(jìn)行任何配置。但在做UDP套接字程序的調(diào)試時(shí),第1步XP下的服務(wù)器端/客戶端能正常運(yùn)行,但第2步將客戶端移植到win ce下時(shí),發(fā)現(xiàn)作為服務(wù)端的PC機(jī)始終無(wú)法收到模擬器發(fā)出的UDP數(shù)據(jù)包。也不知道問(wèn)題出在哪里,無(wú)奈之下,只有一步步測(cè)試。
首先使用簡(jiǎn)單的winsock API分別寫(xiě)一個(gè)服務(wù)端和客戶端,服務(wù)端和客戶端都運(yùn)行于win ce平臺(tái),使用UDP套接字連接,來(lái)測(cè)試在模擬器同時(shí)充當(dāng)服務(wù)端和客戶端時(shí),服務(wù)端是否能收到客戶端發(fā)出的UDP數(shù)據(jù)包,以驗(yàn)證基本代碼使用的正確與否(這也是挺無(wú)奈的測(cè)試,主要是擔(dān)心是由于代碼寫(xiě)錯(cuò)了,而不是環(huán)境的原因?qū)е翽C不能收到模擬器的UDP數(shù)據(jù)包)。測(cè)試結(jié)果是正常,在同一臺(tái)模擬器上,服務(wù)端能夠收到客戶端發(fā)出的UDP數(shù)據(jù)包。
按照這個(gè)結(jié)果,PC不能收到模擬器的UDP數(shù)據(jù)包應(yīng)該是由于模擬器無(wú)法訪問(wèn)到PC機(jī)的ip而引起,應(yīng)該是網(wǎng)絡(luò)環(huán)境的設(shè)置問(wèn)題。在網(wǎng)上搜索資料,找到了子彈頭的關(guān)于“配置Pocket PC 2003 SE設(shè)備仿真器的網(wǎng)絡(luò)設(shè)置”的說(shuō)明,主要是安裝虛擬網(wǎng)卡,然后將模擬器的“NE2000 PCMCIA”網(wǎng)卡綁定到虛擬網(wǎng)卡,建立一個(gè)網(wǎng)絡(luò)環(huán)境。這樣模擬器應(yīng)該能夠訪問(wèn)到PC的ip。照著實(shí)施了一遍,發(fā)現(xiàn)有些地方情況不同,下面把我的配置過(guò)程完整介紹一下:
3.1下載并安裝虛擬網(wǎng)卡驅(qū)動(dòng)程序(http://www.microsoft.com/downloads/details.aspx?FamilyID=dc8332d6-565f-4a57-be8c-1d4718d3af65&DisplayLang=en)。以我的理解來(lái)看,這里安裝的虛擬網(wǎng)卡和通常使用的虛擬光驅(qū)軟件是不同的,它并不是虛擬出一塊網(wǎng)卡出來(lái),安裝后在查看系統(tǒng)的硬件也未發(fā)現(xiàn)并未添加一塊網(wǎng)卡。它應(yīng)該是專(zhuān)用于模擬器,實(shí)現(xiàn)將模擬器的網(wǎng)卡和真實(shí)網(wǎng)卡進(jìn)行綁定的一個(gè)中間驅(qū)動(dòng)。
3.2綁定模擬器的網(wǎng)卡。啟動(dòng)模擬器,然后從模擬器的文件菜單中選擇配置,在 “仿真程序?qū)傩浴睂?duì)話框中切換到“網(wǎng)絡(luò)”頁(yè),然后勾選“啟用 NE2000 PCMCIA 網(wǎng)絡(luò)適配器并綁定到”選項(xiàng)。在系統(tǒng)中只有一塊真實(shí)網(wǎng)卡的情況下,這里并不能選擇具體綁定到哪一個(gè)網(wǎng)卡,也印證了前面的猜測(cè),虛擬網(wǎng)卡并不是象虛擬光驅(qū)那樣為系統(tǒng)添加一個(gè)虛擬的硬件。
3.3配置模擬器網(wǎng)卡的參數(shù)。在模擬器內(nèi)選擇:開(kāi)始-〉設(shè)置-〉連接-〉網(wǎng)卡,進(jìn)入“配置網(wǎng)絡(luò)適配器”。選擇我的網(wǎng)卡連接到“默認(rèn) Internet配置”,然后再選擇“NE2000 兼容 Ethernet 驅(qū)動(dòng)程序”,對(duì)網(wǎng)卡的ip、網(wǎng)關(guān)、dns進(jìn)行具體配置。
3.4配置完成后,軟重置模擬器,接下來(lái)就可以在主機(jī)中使用ping命令來(lái)測(cè)試與模擬器連通情況??梢愿哪M器的ip,更改后要軟重置模擬器才能生效。
整個(gè)過(guò)程只需要上面這四步即可,不需要設(shè)置傳輸方式等操作。完成配置后,模擬器就有了一個(gè)固定ip,局域網(wǎng)內(nèi)的機(jī)器也可以訪問(wèn)到模擬器的這個(gè)ip。通過(guò)這個(gè)ip,只要模擬器的網(wǎng)關(guān)和dns配置正確(設(shè)置成和主機(jī)一樣),就可以直接上網(wǎng),而不再需要借助ActiveSync了。
通過(guò)以上的配置,作為服務(wù)端的主機(jī)可以正常收到作為客戶端的PPC模擬器發(fā)出的UDP數(shù)據(jù)包。
綁定綁定模擬器的網(wǎng)卡到真實(shí)網(wǎng)卡后,每次啟動(dòng)模擬器時(shí),都會(huì)彈出一個(gè)提示,“要啟用NE2000 PCMCIA網(wǎng)卡的仿真嗎?這將使在仿真程序中運(yùn)行的代碼能夠訪問(wèn)此網(wǎng)絡(luò)”,點(diǎn)是即可。
現(xiàn)在設(shè)備已經(jīng)俱全,一共有3臺(tái)pda(一臺(tái)沒(méi)有上網(wǎng)功能,一臺(tái)支持 CDMA 1X,一臺(tái)支持GPRS),也配好了cmwap、cmnet、cdma 1x三張上網(wǎng)卡,一切俱備,后面就等著開(kāi)通一個(gè)外網(wǎng)ip,這樣的話真實(shí)環(huán)境就全部建起來(lái)了。但我還是希望能在模擬器上完成日常的調(diào)試,因?yàn)檫@個(gè)最方便,不 用到處去插線,拿觸筆點(diǎn)小小的pda屏幕。通過(guò)上面調(diào)試TCP和UDP套接字的過(guò)程我也發(fā)現(xiàn)在模擬器環(huán)境下調(diào)試wince網(wǎng)絡(luò)程序也是完全可能的。關(guān)于程序性能、真實(shí)網(wǎng)絡(luò)環(huán)境的速度等可以在模擬器下調(diào)試通過(guò)后再集中放到實(shí)機(jī)上測(cè)試。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -