前言
在 Windows Form Application 里对于取得 IP Address 有内网、外网两种 IP Address ,如果只需要取得内网 IP Address ,可以透过使用 IPHostEntry 类别取得,而外网的话就必须要发送一个 Request 到一个可以取得 IP Address 的网站后再分析 Response 的内容,这个网站可以自己做或者使用现成的,如 http://www.whatismyip.com.tw/ 。
另外,在使用 Socket 通讯的情况下,也有可能有需要知道前来连结的客户端的 IP Address 是什么,这时就可以使用 Socket.RemoteEndPoint 属性来取得远程 IP 地址和通讯端口编号,以下就列出范例代码看看该如何使用。
范例程序代码
/// <summary> /// 取得外网 IP Address /// </summary> /// <returns></returns> private string GetExtranetIPAddress() { HttpWebRequest request = HttpWebRequest.Create("http://www.whatismyip.com.tw") as HttpWebRequest; request.Method = "GET"; request.ContentType = "application/x-www-form-urlencoded"; request.UserAgent = "Mozilla/5.0"; string ip = string.Empty; WebResponse response = request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string result = reader.ReadToEnd(); string pattern = @"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"; ip = Regex.Match(result, pattern).ToString(); } return ip; // result: 210.125.21.xxx }