日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 网络编程之通过ip地址获取地理位置(补充)

發布時間:2024/5/28 C# 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 网络编程之通过ip地址获取地理位置(补充) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面我寫過一篇文章"C# 網絡編程之獲取本機名、ip地址、域名、物理位置"里面可以根據輸入的網址根據其ip地址獲取器物理位置,其中該部分主要代碼是通過有道網提供的在線第三方接口實現動態獲取它的數據.引用popping_dancer的博客代碼,其主要代碼如下圖所示:

/// <summary> /// 根據IP 獲取物理地址 /// </summary> /// <param name="strIP"></param> /// <returns></returns> public static string GetstringIpAddress(string strIP) //strIP為IP {string sURL = "http://www.youdao.com/smartresult-xml/search.s?type=ip&q=" + strIP + "";string stringIpAddress = ""; //地理位置using (XmlReader read = XmlReader.Create(sURL)) //獲取youdao返回的xml格式文件內容{while (read.Read()) //從流中讀取下一個字節{switch (read.NodeType){case XmlNodeType.Text: //取xml格式文件當中的文本內容if (string.Format("{0}", read.Value).ToString().Trim() != strIP){stringIpAddress=string.Format("{0}", read.Value).ToString().Trim();}break;}}}return stringIpAddress; }

當時獲取的結果如下圖所示,但是可能由于有道已經刪除該URL網址,現在已經不能通過該接口獲取地理位置.所有我又提供了一種新的方法,希望能幫助到大家和那位朋友.

?

由于能力有限,只會通過訪問第三方接口獲取物理地址,而且很大程度上取決于該網站提供的庫數據,如果采用訪問本地靜態的庫查找相應的地理位置,也不太適用.現在訪問的網址是:http://www.freegeoip.net/xml/?

?

源代碼及顯示的結果如下所示:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; //Xml文檔namespace GetLocation {class Program{static void Main(string[] args){string strIP = "74.125.31.104"; //ip地址string strURL = "http://www.freegeoip.net/xml/" + strIP; //網址URLstring Location = ""; //物理位置//通過GetElementsByTagName獲取標簽結點集合XmlDocument doc = new XmlDocument(); //Xml文檔doc.Load(strURL); //加載strURL指定XML數據XmlNodeList nodeLstCity = doc.GetElementsByTagName("City"); //獲取標簽Location = "獲取單個物理位置:" + nodeLstCity[0].InnerText + "";Console.WriteLine(Location);//通過SelectSingleNode匹配匹配第一個節點XmlNode root = doc.SelectSingleNode("Response");if (root != null){string CountryName = (root.SelectSingleNode("CountryName")).InnerText;string RegionName = (root.SelectSingleNode("RegionName")).InnerText;string City = (root.SelectSingleNode("City")).InnerText;Location="國家名稱:"+CountryName+"\n區域名稱:"+RegionName+"\n城市名稱:"+City;Console.WriteLine(Location);}Console.Read();}} }

文章主要通過GetElementsByTagName和SelectSingleNode兩種方法獲取Xml文檔中提取標簽Tag,獲取http://www.freegeoip.net/xml/www.baidu.com中的物理位置.推薦大家學習C#中讀取Xml文件制定結點的知識.運行結果如下圖所示:

下面提供一些這方面的有些非常優秀的內容僅供大家學習,同時也方便自己下次查閱:
1.C# 網絡編程之獲取本機名\IP地址\域名\物理位置 (這是我自己的文章,結合該篇文章學習)
http://blog.csdn.net/eastmount/article/details/9270221
2.Get user location by IP address(使用C#獲取物理位置 也是該篇文章的基礎)
http://www.codeproject.com/Questions/686644/Get-user-location-by-IP-address
3.獲取電腦物理地址以及通過IP地址獲取當前地理位置的接口-搶街飯的專欄(使用PHP獲取非常優秀的文章)
http://blog.csdn.net/lzwjavaphp/article/details/6972667
4.IP Address Location In ASP.NET(consume a free online API and fetch data using LINQ To XML)
http://www.dotnetcurry.com/showarticle.aspx?ID=325
5.get uesr location by ip address(關于它的討論 希望大家去Stack Overflow學習知識)
http://stackoverflow.com/questions/4327629/get-user-location-by-ip-address
?6.XmlDocument.Load(url)問題(讀取天氣信息文章,與我的方法相同)
http://www.cnblogs.com/sharpfeng/archive/2011/03/02/1968666.html
最后希望該篇文章對大家有所幫助,同時希望該文章能幫助那位同學解決問題.如果文章中錯誤或不足之處,見諒!由于只會采用這種通過第三方接口的方法獲取物理位置,很大程度依賴與第三方的數據,如果該網址被廢除,很麻煩,同時會遇到不同網址查詢結果也不同.希望有好的方法可以討論分享.
(By:Eastmount 2014-1-22 下午5點 http://blog.csdn.net/eastmount)

總結

以上是生活随笔為你收集整理的C# 网络编程之通过ip地址获取地理位置(补充)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。