最近在實施msn direct專案時,需要用***+adsl方案把放在西格瑪的伺服器和電視塔上的發射裝置連線在一起,為了測試網路是否正常,需要兩邊的人進行配合,通過ping命令判斷網路是否聯通。由於電視塔僅周二下午才允許除錯,除錯時間有限,並且人手也有限,為了節省時間,所以萌生了做乙個windows mobile ping 命令的想法,這樣通過手機就可以直接測試網路是否聯通。
windows mobile是沒有現成的ping可用的,所以需要自己做乙個。一種最直接的想法就是用socket實現icmp協議(針對ping命令的部分),對於桌面版的.net framework中的socket,只要如下進行定義,就可以是實現收發icmp資料報。
socket socket = new socket(addressfamily.internetwork, sockettype.raw, protocoltype.icmp);但是很不幸的是.net compact framework不支援protocoltype.icmp引數,所以也無從用socket實現了。幸好天無絕人之路,windows mobile還提供了icmp的api介面,可以通過這些api介面,實現ping命令的功能,核心**如下:
publicclass sw
[structlayout(layoutkind.sequential, charset = charset.auto)]
private struct icmp_echo_reply
#endregion
public
static
int ping(string ip, int timeout,out string info)
int result = -1;
intptr icmphandle;
int32 iip;
string sdata;
ip_option_information oicmpoptions = new ip_option_information();
icmp_echo_reply icmpreply = new icmp_echo_reply();
int32 ireplies;
icmphandle = icmpcreatefile();
iip = bitconverter.toint32(host.address.getaddressbytes(), 0);
sdata = "abcdefghijklmnopqrstuvwxyz012345";
oicmpoptions.ttl = 255;
ireplies = icmpsendecho(icmphandle, iip, sdata, (int16)sdata.length, ref oicmpoptions, ref icmpreply, marshal.sizeof(icmpreply), timeout);
if (icmpreply.status == 0)
else
icmpclosehandle(icmphandle);
return result;
} }
最終程式執行後的介面如下:
需要注意的是,gprs連線必須是cmnet(關於如何建立gprs連線,有興趣的朋友可以參考我以前寫的文章:讓智慧型手機和居家電腦互聯互通(wm6 gprs)),否則是無法ping通公網ip的,此外我們發現windows mobile手機的ip為10.x.x.x,我們知道10開頭的ip位址是a類位址,查相關資料,我們可知10.0.0.0到10.255.255.255是私有位址(所謂的私有位址就是在網際網路上不使用,而被用在區域網路中的位址)。每個a類位址理論上可連線16777214臺主機,這大約是1千六百萬臺,這也是同時使用gprs的手機數上限了。由於windows mobile手機分配的ip位址不是公網ip,所以很遺憾,我們不能在pc上ping windows mobile手機,也就無法測試pc的ping出命令是否正常了。[葉帆工作室]
Kafka命令實操
如果對kafka基本概念不了解,建議先學習一下一些名詞的含義 附上 kafka入門和高階 建立主題 建立了乙個test主題 bin kafka topics.sh create zookeeper 虛擬機器ip 2181 replication factor 2 partitions 1 topic...
Linux實操命令
vi命令 3.vi 檔案後 set nu 則顯示檔案的行號 4.vi 檔案後 g是跳到檔案尾部 gg是跳到首行 nohup 不結束通話地執行命令 關閉終端 1.nohup command 2.在當前終端介面檢視執行的後台程序 jobs l 3.關閉終端重新開啟終端檢視執行的後台程序 ps ef gr...
linux實訓 歷史命令
介紹 wget 裡面記錄是一些命令的記錄,現在需要你從裡面找出出現頻率次數前3的命令並儲存在 home shiyanlou result。目標 處理文字data 將結果寫入result 結果包含次數和命令,如 100 ls 提示 cut擷取 c 8 明白含義嗎 uniq dc去重 sort 的引數選...