C#网络应用编程实验1

实验名称:IP地址转换和域名解析

实验目的:1、通过本实验,复习本教材各章例子里的WPF前端主界面和子页面的实现。

2、通过本实验,熟悉和掌握IPAddress类、IPEndPoint类、IPHostEntry类、DNS类的使用。

实验内容:

实验的重点、难点:IPAddress类、IPEndPoint类、IPHostEntry类、DNS类的使用。

实验环境:Visual stdio 2017以上

XML

<Grid Margin="20">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Rectangle Grid.Column="2" Fill="white"
                   RadiusX="14" RadiusY="14" Stroke="Blue" StrokeDashArray="3"/>
        <Rectangle Grid.Column="0" Margin="7"   Fill="#FFF0F9D8"
                   RadiusX="10" RadiusY="10" Stroke="Blue" StrokeDashArray="3"/>
        <Rectangle Grid.Column="0" Margin="20"   Fill="white" Stroke="Blue"/>
        <ScrollViewer Grid.Column="0" Margin="22">
            <StackPanel>
                <StackPanel.Resources>
                    <Style TargetType="Button">
                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
                        <Setter Property="Margin" Value="5 10 5 0"/>
                        <Setter Property="Padding" Value="15 0 15 0"/>
                        <Setter Property="FontSize" Value="10"/>
                        <EventSetter Event="Click" Handler="button_Click"/>
                    </Style>
                </StackPanel.Resources>
                <Button Content="例1" Tag="/Examples/Page1.xaml"/>
                <Button Content="例2" Tag="/Examples/Page2.xaml"/>
                <Button Content="例3" Tag="/Examples/Page3.xaml"/>
            </StackPanel>
        </ScrollViewer>
        <Frame Name="frame1" Grid.Column="1" Margin="10" BorderThickness="1"
               BorderBrush="Blue" NavigationUIVisibility="Hidden"/>
    </Grid>

 private void button_Click(object sendar,RoutedEventArgs e)
        {
            Button btn = e.Source as Button;
            btn.Foreground = Brushes.Red;
            oldButten.Foreground = Brushes.Black;
            oldButten = btn;
            frame1.Source = new Uri(btn.Tag.ToString(), UriKind.Relative);
        }
private void button_Click(object sendar,RoutedEventArgs e)
        {
            Button btn = e.Source as Button;
            btn.Foreground = Brushes.Red;
            oldButten.Foreground = Brushes.Black;
            oldButten = btn;
            frame1.Source = new Uri(btn.Tag.ToString(), UriKind.Relative);
        }
<DockPanel>
        <Label DockPanel.Dock="Top" Content="DNS域名解析和IP地址转换的基本用法"
               Style="{StaticResource LabelStyle}"/>
        <Border DockPanel.Dock="Bottom" Style="{StaticResource BorderStyle}">
            <Button Name="btn" HorizontalAlignment="Center" 
                    Padding="10 0 10 0" Content="运行" Click="btn_Click"/>
        </Border>
        <ScrollViewer>
            <StackPanel Background="White" TextBlock.LineHeight="20">
                <TextBlock x:Name="textBlock1" Margin="0 10 0 0" TextWrapping="Wrap"/>
            </StackPanel>
        </ScrollViewer>
    </DockPanel>
private void btn_Click(object sender, RoutedEventArgs e)
        {
            StringBuilder sb= new StringBuilder();
            sb.AppendLine("获取www.cctv.com的所有IP地址");
            try
            {
                IPAddress[] ips = Dns.GetHostAddresses("www.cctv.com");//返回指定主机的Internet协议IP地址
                foreach (IPAddress ip in ips) {
                   sb.AppendLine(ip.ToString());
                }
            }
            catch(Exception ex)
            {
                 MessageBox.Show(ex.Message,"获取失败");
            }
            string hostName=Dns.GetHostName();//获取本地计算机的主机名
            sb.AppendLine("获取本机所有IP地址");
            IPHostEntry me=Dns.GetHostEntry(hostName);//将主机名或IP地址解析为IPHostEntry实例
            foreach(IPAddress ip in me.AddressList) {
                if (ip.AddressFamily == AddressFamily.InterNetwork)
                {
                    sb.AppendLine("IPv4:"+ip.ToString());
                }
                else if(ip.AddressFamily==AddressFamily.InterNetworkV6){
                    sb.AppendLine("IPv6:" + ip.ToString());
                }
                else
                {
                    sb.AppendLine("其他" + ip.ToString());
                }
            }
            IPAddress localip = IPAddress.Parse("::1");
            Output(sb,localip);
            IPAddress localip1=IPAddress.Parse("127.0.0.1");
            Output(sb,localip1);
            textBlock1.Text= sb.ToString();
        }
        private static void Output(StringBuilder sb, IPAddress localip)
        {
            IPEndPoint iep = new IPEndPoint(localip, 80);
            if (localip.AddressFamily == AddressFamily.InterNetworkV6)
            {
                sb.Append("IPv6端点:" + iep.ToString());
            }
            else
            {
                sb.Append("IPv4端点:" + iep.ToString());
            }
            sb.Append(",端口"+iep.Port);
            sb.Append(",地址" + iep.Address);
            sb.AppendLine(",地址族"+iep.AddressFamily);
        }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

用户1234567890

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值