作者:馬寧
最近被一個軟體網路連接的問題,折騰得死去活來。問題本身不複雜,主要是網路設定不同造成的,在這裡不多說了。在調試過程中,用到了Windows CE下的幾個網路監測工具,才瞭解到Windows CE下也可以用我們平時用的網路監測工具,寫出來和大家共用一下吧。
環境設定
我用Windows CE 6.0 R2環境做實驗,開發環境搭建可以參考:
http://blogs.msdn.com/mikehall/archive/2009/06/10/steps-needed-to-install-windows-embedded-ce-6-0-from-scratch.aspx
我們使用Device Emulator作為測試平台,建立OS Design的過程就不多說了,可以參考:
http://blog.csdn.net/aawolf/archive/2007/12/19/1953448.aspx
需要指出的是,需要在OS Design中加入SYSGEN_NETUTILS。如果在Catalog Item中選擇的話,選擇的Network Utilities (IpConfig, Ping, Route), TCP/IP選項(SYSGEN_TCPIP)也會被加入。
OS Design建立和編譯完成後,我們要部署到Device Emulator上。設定Device Emulator的外觀和網路連接,選擇Connectivity Options。紅色圓圈位置:
在Connectivity Options對話方塊裡,Download和Transport選擇“Device Emulator(DMA)”,Debugger選擇“KdStub”,點擊Download後的Settings按鈕。
在Display頁面裡將解析度設定為640和480。
在Network頁面裡,選擇“Enable NE2000 …”網卡的選項,這樣,PC上的網路連接就可以被映射為Device Emulator的NE2000網卡了。需要提醒一點的是,需要在PC上安裝Virtual PC虛擬網卡驅動,最簡單的辦法就是安裝Virtual PC 2007.
到這裡,我們已經配置完Device Emulator的網路設定,選擇Target菜單裡的Attach Device,將編譯好的NK.bin下載到Device Emulator上,並運行。
Ping命令
等Device Emulator啟動之後,我們可以在輸入命令進行調試了。在Target目錄中選Target Control,Command Shell會出現。所示:
先運行ping命令,如果我們直接輸入s ping x.x.x.x的話,會在模擬器中顯示一個命令列視窗,並且輸出執行結果。S的意思是在CE中運行某個應用程式。結果如:
不過問題隨之而來,命令列視窗會在ping命令執行完成後,自動結束。我們想查看ping命令的執行情況,就需要眼疾手快了。難道,沒有其他的辦法了嗎?
有,我們輸入s ping x.x.x.x /d,執行結果會輸出到output視窗中。
下面的示範我會將output裡的結果貼出來,不再了。
ipconfig命令
接下來是另外一個簡單的網路監測工具:ipconfig。在Command Shell中輸入s ipconfig /all /d。/all 是ipconfig的命令,顯示所有的配置資訊,除此之外還有/renew和/release兩個參數,用於更新網卡的IP地址。/d還是將結果顯示到Output視窗中。
PB Debugger Loaded symbols for 'D:/NINMA/RELDIR/DEVICEEMULATOR_ARMV4I_RELEASE/IPCONFIG.EXE'
122396 PID:5860042 TID:5890056 Windows IP configuration
122465 PID:5860042 TID:5890056 Ethernet adapter Local Area Connection:
122465 PID:5860042 TID:5890056 IP Address ........ : 192.168.0.163
122465 PID:5860042 TID:5890056 Subnet Mask ....... : 255.255.255.0
122465 PID:5860042 TID:5890056 IP Address ........ : fe80::203:ffff:fe55:8d9f%5
122465 PID:5860042 TID:5890056 Default Gateway ... : 192.168.0.1
122465 PID:5860042 TID:5890056 Adapter Name ...... : NE20001
122465 PID:5860042 TID:5890056 Description ....... : NE20001
122465 PID:5860042 TID:5890056 Adapter Index ..... : 2
122465 PID:5860042 TID:5890056 Address............ : 00 03 ff 55 8d 9f
122465 PID:5860042 TID:5890056 DHCP Enabled....... : YES
122465 PID:5860042 TID:5890056 DHCP Server........ : 192.168.0.1
122465 PID:5860042 TID:5890056 Primary WinsServer :
122465 PID:5860042 TID:5890056 Secondary WinsServer:
122465 PID:5860042 TID:5890056 Lease obtained on : Sunday, July 5 ,2009 18 : 5 : 30
122465 PID:5860042 TID:5890056 Lease expires on : Sunday, July 12 ,2009 18 : 5 : 30
122465 PID:5860042 TID:5890056 AutoConfig Enabled : YES
122465 PID:5860042 TID:5890056
122465 PID:5860042 TID:5890056 Tunnel adapter []:
122467 PID:5860042 TID:5890056 Interface Number .. : 4
122467 PID:5860042 TID:5890056
122468 PID:5860042 TID:5890056 Tunnel adapter [6to4 Pseudo-Interface]:
122468 PID:5860042 TID:5890056 Interface Number .. : 3
122468 PID:5860042 TID:5890056
122469 PID:5860042 TID:5890056 Tunnel adapter [Automatic Tunneling Pseudo-Interface]:
122469 PID:5860042 TID:5890056 Interface Number .. : 2
122470 PID:5860042 TID:5890056 IP Address ........ : fe80::5efe:192.168.0.163%2
122470 PID:5860042 TID:5890056
122474 PID:5860042 TID:5890056 Host name.......... : WindowsCE
122474 PID:5860042 TID:5890056 Domain Name........ :
122474 PID:5860042 TID:5890056 DNS Servers........ : 62.244.19.19
122474 PID:5860042 TID:5890056 192.168.0.1
122474 PID:5860042 TID:5890056 NODETYPE........... : 8
122474 PID:5860042 TID:5890056 Routing Enabled.... : NO
122474 PID:5860042 TID:5890056 Proxy Enabled...... : NO
122474 PID:5860042 TID:5890056
PB Debugger Unloaded symbols for 'D:/NINMA/RELDIR/DEVICEEMULATOR_ARMV4I_RELEASE/IPCONFIG.EXE'
Netstat命令
接下來是netstat,顯示網路當前的狀態。輸入s netstat -e /d,顯示乙太網路的統計資料,比如發送和接收到的位元組數等。
PB Debugger Loaded symbols for 'D:/NINMA/RELDIR/DEVICEEMULATOR_ARMV4I_RELEASE/WINSOCK.DLL'
273033 PID:5120022 TID:514005e
273035 PID:5120022 TID:514005e Interface Statistics Received Sent
273036 PID:5120022 TID:514005e Bytes 145754 14193
273036 PID:5120022 TID:514005e Unicast Packets 503 98
273036 PID:5120022 TID:514005e NonUnicast Packets 19 7
273036 PID:5120022 TID:514005e Discards 0 0
273037 PID:5120022 TID:514005e Errors 0 0
PB Debugger Unloaded symbols for 'D:/NINMA/RELDIR/DEVICEEMULATOR_ARMV4I_RELEASE/WINSOCK.DLL'
273037 PID:5120022 TID:514005e Unknown Protocols 0
273037 PID:5120022 TID:514005e Name =
273037 PID:5120022 TID:514005e Index =2
273037 PID:5120022 TID:514005e Physical Addrress =0003FF558D9F
273037 PID:5120022 TID:514005e Description =NE20001
273037 PID:5120022 TID:514005e Type =6
273037 PID:5120022 TID:514005e Mtu =1500
273037 PID:5120022 TID:514005e Speed - bps =10000000
273038 PID:5120022 TID:514005e Administrative Status =1
273038 PID:5120022 TID:514005e Oprerational Status =5
273038 PID:5120022 TID:514005e Output Queue Length =0
PB Debugger Unloaded symbols for 'D:/NINMA/RELDIR/DEVICEEMULATOR_ARMV4I_RELEASE/NETSTAT.EXE'
輸入s s netstat -n /d,會顯示當前活動的TCP串連,包括地址和連接埠號碼:
471308 PID:53a0062 TID:53b0062 GetTcpTable.
471308 PID:53a0062 TID:53b0062
471308 PID:53a0062 TID:53b0062 UDP TABLE
471308 PID:53a0062 TID:53b0062 Loc Addr Loc Port
471309 PID:53a0062 TID:53b0062 0.0.0.0 137
471309 PID:53a0062 TID:53b0062 0.0.0.0 138
輸入s netstat -p tcp /d,會顯示指定網路通訊協定的資訊,如下:
1998793 PID:5f0003e TID:460006e TCP Statistics:
1998793 PID:5f0003e TID:460006e --------------
1998793 PID:5f0003e TID:460006e Active Opens = 9
PB Debugger Unloaded symbols for 'D:/NINMA/RELDIR/DEVICEEMULATOR_ARMV4I_RELEASE/WINSOCK.DLL'
1998793 PID:5f0003e TID:460006e Passive Opens = 0
1998793 PID:5f0003e TID:460006e Connect Attempt Fails = 0
1998793 PID:5f0003e TID:460006e Reset Connections = 9
1998793 PID:5f0003e TID:460006e Current Connections = 0
1998793 PID:5f0003e TID:460006e Segments Received = 57
1998793 PID:5f0003e TID:460006e Segments Sent = 72
1998793 PID:5f0003e TID:460006e Segments Retransmitted = 2
1998793 PID:5f0003e TID:460006e Errors Received = 0
1998793 PID:5f0003e TID:460006e Sgmnts sent w/Reset Flag= 12
1998793 PID:5f0003e TID:460006e Cumulative Connections = 0
1998793 PID:5f0003e TID:460006e Time-Out Algorithm = 4
1998793 PID:5f0003e TID:460006e Time-Out Minimim = 300
1998793 PID:5f0003e TID:460006e Time-Out Maximum = 120000
1998793 PID:5f0003e TID:460006e Maximum Connections = Dynamic (-1)
-s選項顯示各種協議的統計資訊,比如IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP和UDPv6協議。-p可以和-s共同使用,用於顯示某種協議的統計資訊。
-r選項則顯示路由表資訊,與後邊的route print命令類似。
Route命令
輸入s route print /d,顯示當前的路由表資訊:
2379153 PID:4a5006a TID:4bb0076 =============================================================================
2379153 PID:4a5006a TID:4bb0076 Interface List
2379153 PID:4a5006a TID:4bb0076 0x2 00 03 ff 55 8d 9f NE20001
2379153 PID:4a5006a TID:4bb0076 =============================================================================
2379153 PID:4a5006a TID:4bb0076 =============================================================================
2379153 PID:4a5006a TID:4bb0076 Active Routes
PB Debugger Unloaded symbols for 'D:/NINMA/RELDIR/DEVICEEMULATOR_ARMV4I_RELEASE/WINSOCK.DLL'
2379153 PID:4a5006a TID:4bb0076 The no. of entries is ::: 7
2379153 PID:4a5006a TID:4bb0076 Destination Netmask GatewayAddress Interface Metric
2379153 PID:4a5006a TID:4bb0076 ----------------------------------------------------------------------------
2379153 PID:4a5006a TID:4bb0076 0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.163 30
2379153 PID:4a5006a TID:4bb0076 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
2379153 PID:4a5006a TID:4bb0076 192.168.0.0 255.255.255.0 192.168.0.163 192.168.0.163 30
2379153 PID:4a5006a TID:4bb0076 192.168.0.163 255.255.255.255 127.0.0.1 127.0.0.1 30
2379153 PID:4a5006a TID:4bb0076 192.168.0.255 255.255.255.255 192.168.0.163 192.168.0.163 30
2379153 PID:4a5006a TID:4bb0076 224.0.0.0 240.0.0.0 192.168.0.163 192.168.0.163 30
2379153 PID:4a5006a TID:4bb0076 255.255.255.255 255.255.255.255 192.168.0.163 192.168.0.163 1
2379153 PID:4a5006a TID:4bb0076 =============================================================================
Route除了print命令外,還有Add和Delete命令。大家可以參考Route的協助,我們就不多解釋了。
Tracert命令
Tracert命令用於跟蹤你的裝置到某個IP地址的路由。輸入s Tracert www.sohu.com –p,需要說明的是,Tracert結果輸入到output的參數是-p。
Tracing route to www.sohu.com [222.35.250.135]
over a maximum of 30 hops:
2634835 PID:27002de TID:5650052 1
2634847 PID:27002de TID:5650052 5 ms
2634853 PID:27002de TID:5650052 6 ms
2634855 PID:27002de TID:5650052 1 ms
2635521 PID:27002de TID:5650052 192.168.0.1
2635521 PID:27002de TID:5650052
2636524 PID:27002de TID:5650052 2
2640537 PID:27002de TID:5650052 *
2640720 PID:27002de TID:5650052 179 ms
2640923 PID:27002de TID:5650052 203 ms
2641022 PID:27002de TID:5650052 222.35.*.*
2641022 PID:27002de TID:5650052
2641823 PID:27002de TID:5650052 3
2642038 PID:27002de TID:5650052 213 ms
2642241 PID:27002de TID:5650052 199 ms
2642444 PID:27002de TID:5650052 200 ms
2642543 PID:27002de TID:5650052 222.35.*.*
2642543 PID:27002de TID:5650052
2643345 PID:27002de TID:5650052 4
2643755 PID:27002de TID:5650052 406 ms
2643958 PID:27002de TID:5650052 202 ms
2644060 PID:27002de TID:5650052 102 ms
2644980 PID:27002de TID:5650052 222.35.*.*
2644981 PID:27002de TID:5650052
2645883 PID:27002de TID:5650052 5
2649895 PID:27002de TID:5650052 *
2650171 PID:27002de TID:5650052 273 ms
2650381 PID:27002de TID:5650052 205 ms
2656618 PID:27002de TID:5650052 222.35.*.*
Trace complete.
好了,對於Windows CE上的網路監測工具,我們就先介紹到這裡。我們將在後邊繼續介紹另一個功能強大的網路偵查工具——netlog。
更多關於Windows Embedded CE開發的文章,請參考“Windows Embedded CE 中國研發團隊”的中文部落格:http://blogs.msdn.com/wincechina/