發一個自己寫的C#的IP所在地查詢程序,使用純真/珊瑚蟲數據庫均可(QQWry.dat/CoralWry.dat),程序的實際使用價值可能不大,僅作為此類c#程序的參照。
有些朋友在C#中使用動態類別物件的建構子/析構函數在物件的初始化/釋放時來開啟/關閉資料文件,這雖然是一個很好的面向的思想,但託管程式物件的釋放時間是不確定的,尤其是ASP.NET的使用,這一方面由於開啟的檔案未釋放會造成資源浪費,更重要的是可能會帶來線程並發所造成的共享衝突,另外如果在ASP.NET中使用緩存機制則會增加程式的複雜性和降低模組的獨立性、重用性。
基於這些原因,程式中全部使用靜態方法,實際上這是由我的另一個C++的程式改寫的C#程序,模組的呼叫很簡單,例如,使用目前目錄下的CoralWry.dat資料檔來查詢IP位址121.193.213.6,則可以:
IpLocation ipl=IpLocation ipl=IpLocator.GetIpLocation("CoralWry.dat","121.193.213.246");
Console.WriteLine("IP位址區段: "+IpLocator.IntToIpString(ipl.IpStart)+" - "+IpLocator.IntToIpString(ipl.IpEnd));
Console.WriteLine("IP所在地: "+ipl.Country+" "+ipl.City);
傳回值是一個IpLocation結構,包含4個屬性:Country國家、City城市、IpStart/IpEnd IP段開始/結束值(uint型,可使用IntToIpString()函數轉成點分IP字串)
展開