C 中實現IP位址的排序

2021-05-23 11:18:08 字數 2308 閱讀 1633

這一切的開始要從同事手中的乙個醫療專案開始。

早上一到公司,就看到同事跟資料庫連線幹上了。要處理的問題是判斷網路是否連通。因為如果你不去判斷的話,系統只會提示說"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...