输出本机的IP地址并加以筛选ipv4型、ipv6型
1.文件MainWindow.xaml
<Window x:Class="w3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:w3"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button Content="Button" HorizontalAlignment="Center" Margin="0,360,0,0" VerticalAlignment="Top" Height="30" Width="57" Click="Button_Click"/>
<TextBox x:Name="textBox" HorizontalAlignment="Left" Margin="223,82,0,0" Text="" TextWrapping="Wrap" VerticalAlignment="Top" Width="367" Height="231"/>
</Grid>
</Window>
2.文件MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.Net.Sockets;
namespace w3
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string hostName = Dns.GetHostName();
this.textBox.Text = hostName;
//IPAddress[] ips = Dns.GetHostAddresses("127.0.0.1");//只能返回双引号里面的一个地址
IPAddress[] ips = Dns.GetHostAddresses(hostName);
int count = ips.Length;
int i = 0;
while (i < count)
{
IPAddress ip = ips[i];
if (ip.AddressFamily == AddressFamily.InterNetwork) {
this.textBox.AppendText(i+"\n"+ip.ToString());//筛选出ipv4型的地址输出
}
i++;
}
Console.ReadLine();
}
}
}
效果:
3.进阶版文件MainWindow.xaml.cs
使用StringBuilder效率更高。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.Net.Sockets;
namespace w3
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
StringBuilder sb = new StringBuilder();
string hostName = Dns.GetHostName();
sb.AppendLine("主机名:"+hostName);
//IPAddress[] ips = Dns.GetHostAddresses("127.0.0.1");//只能返回双引号里面的一个地址
IPAddress[] ips = Dns.GetHostAddresses(hostName);
int count = ips.Length;
int i = 0;
while (i < count)
{
IPAddress ip = ips[i];
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
sb.AppendLine("ipv4:" + ip.ToString());
}
else {
sb.AppendLine("ipv6:" + ip.ToString());
}
i++;
}
this.textBox.Text = sb.ToString();
Console.ReadLine();
}
}
}
效果:
4.进阶版文件MainWindow.xaml.cs
获取本机IP地址的其它的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net;
using System.Net.Sockets;
namespace w3
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
StringBuilder sb = new StringBuilder();
string hostName = Dns.GetHostName();
IPHostEntry ipe = Dns.GetHostEntry(hostName);//注意此处不能使用IPHostEntry ipe = Dns.GetHostByName(hostName);//被弃用了
IPAddress[] ips = ipe.AddressList;
sb.AppendLine("主机名:"+ipe.HostName);
foreach(IPAddress localIP in ipe.AddressList) {
if (localIP.AddressFamily == AddressFamily.InterNetwork)
{
sb.AppendLine("ipv4:" + localIP.ToString());
}
else
{
sb.AppendLine("ipv6:" + localIP.ToString());
}
}
this.textBox.Text = sb.ToString();
Console.ReadLine();
}
}
}
效果: