winform如何获得本机的ip地址,如是公网的话直接返回公网ip。
string strHostName = Dns.GetHostName();
clientAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
这样得到的总是内网段的ip....
如在公网,可以直接获取吗?
string strHostName = Dns.GetHostName();
clientAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
这样得到的总是内网段的ip....
如在公网,可以直接获取吗?
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
try
{
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(res.GetResponseStream()))
{
return sr.ReadToEnd();
}
}
}
catch (System.Exception e)
{
return e.Message;
}
finally
{
req.Abort();
}
}
// 通过外部网站得到本机的外部IP
static string GetOuterIP()
{
string patt = @"IP: \[(?<IP>[0-9\.]*)\]";
string url = "";
return Regex.Match(GetPage(url), patt).Groups["IP"].Value;
} static void Main()
{
foreach (IPAddress ip in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
{
Console.WriteLine(ip);
}
Console.WriteLine();
Console.WriteLine(GetOuterIP());
}
{
Console.WriteLine(ip);
}