前言

  在 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 地址和通讯端口编号,以下就列出范例代码看看该如何使用。

范例程序代码

[转]C#取得内网IP、外网IP、客户端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
        }
[转]C#取得内网IP、外网IP、客户端IP方法

相关文章: