這一切的開始要從同事手中的乙個醫療專案開始。
早上一到公司,就看到同事跟資料庫連線幹上了。要處理的問題是判斷網路是否連通。因為如果你不去判斷的話,系統只會提示說"sa"登入失敗,卻不告訴你是因為網路的原因,這會讓人相當的鬱悶。
我們的客戶可不喜歡看到這樣"不明不白"的錯誤,於是我們要做的就是幫他"翻譯"過來,讓他們知道是因為你們的網路不通,先找網管來檢查網路,等到不再提示網路問題的時候再給我們打**。
要知道跑來跑去是很浪費時間的。
於是就開始google了,後來我就找到了下面的東西:
在這裡我用到了執行緒,如果直接處理的話,時間上有點不能接受。
下面就以192.168.0.0至192.168.0.255為例:
var thread1; private void button2_click(object sender, eventargs e)
}
這裡很簡單就只是乙個迴圈,唯一看起來不一樣的就是執行緒了。
這裡把迴圈的inum值傳到執行緒裡面去做為ip的最後一段組成:192.168.0.1的格式然後下面再用組合的ip判斷網路是否連通。
已經很久沒碰執行緒這塊兒了,還是回頭看的以前在北大青鳥做的搖獎機專案,最終解決執行緒後一是高興,高興解決了問題,二是感覺我還在吃老本。
我知道是我進步得太慢了,我在努力。
又回到**,不要忘了還需要匯入執行緒的命名空間:
using system.threading;
下面是迴圈呼叫的掃瞄方法scanip方法
public void scanip(object inum)
//thread1是在上面按鈕事件**宣告的
thread1.abort();
}
能實現這樣的功能有很多種方法,起碼我就找到了兩種,覺得這幾段看起來更想我想象中的。
大概意思就是執行cmd命令:ping -n 1 192.168.0.1,然後在返回的結果裡面找是不是有"timeout」字樣或者你也可以直接在cmd裡面執行:ping -n -1 255.265.65.89看看會返回什麼,當然前提是你區域網裡面沒有這個網段的(要是你有我就,,,我就,,,當我沒說-_-!)。
如果有那麼就表示請求超時了,當然這裡也存在乙個問題:比如說網路差而造成大量的丟包,或則說硬體錯誤的時候它不會提示你"timeout",這裡點到為止繼續說下面的**。
if裡面的那個方法是乙個委託,下面是**:
public delegate void addonlineip(string value, listview lbname);
public void setlistboxitem(string value, listview lbname)
); }
else lbname.items.add(new listviewitem(new string ));
}public void setlistboxitem(string value, listview lbname)
); }
else lbname.items.add(new listviewitem(new string ));
}
囧囧更健康。
下面開始點題了
private static uint converttouint(string ip1)
主要就是《沒看懂,不知道是什麼意思,知道的朋友可以說下,先謝了。
private void listview1_columnclick(object sender, columnclickeventargs e)
listview1.items.clear(); //將ips裡面的順序從組
array.sort(ips, new comparison(delegate (string ip1, string ip2)
));for (int i = 0; i < ips.length; i++)
));}
}
先宣告了乙個ips陣列長度為listview1的長度,然後迴圈listview1取出來放到陣列裡面在將這個陣列放到converttouint裡面去排序,呼叫排序的就是中間句array.sort那句呼叫上面的converttouint方法來實現排序。
最後完了先把listview1的item項清空,然後再把剛才排序後的ips陣列給加到listview1裡面就成功了。
差不多了,基本上就是這樣了。
在這裡留個標記下次的時候就不用去翻以前的專案了,這篇blog後我對執行緒又加深印象了。
對於那些現在不懂的,以後再來回顧它。
IP位址排序
class program d stringbuilder sb new stringbuilder 50 foreach match item in matchcoll strip sb.tostring endregion string ipaddress strip.split n 這樣每一組...
C 實現ip 位址過濾功能
string proxy,getip string realip realip request.servervariables http x forwarded for tostring 返回空表示沒有用 否則返回 服務ip proxy request.servervariables remote ...
IP位址中的保留位址
保留ip位址的分配 網際網路上的ip位址統一由乙個叫iana internet assigned numbers authority,網際網路網路號分配機構 的組織來管理。根據用途和安全性級別的不同,ip位址還可以大致分為兩類 公共位址和私有位址。公用位址在internet中使用,可以在intern...