龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

c#使用Socket编程实现ping网络功能操作(3)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
3、利用c#2.0新增的Ping类 这里我写的是一个窗体程序。首先添加textbox,listbox,button控件,其中textbox录入域名或IP,listbox显示结果. 在button1_click事件键入 pri

3、利用c#2.0新增的Ping类

这里我写的是一个窗体程序。首先添加textbox,listbox,button控件,其中textbox录入域名或IP,listbox显示结果.

在button1_click事件键入

private void button1_Click(object sender, EventArgs e)
{
    Ping p1 = new Ping(); //只是演示,没有做错误处理
    PingReply reply = p1.Send(this.textBox1.Text);//阻塞方式
    displayReply(reply); //显示结果

}

private void displayReply(PingReply reply) //显示结果
{
    StringBuilder sbuilder ;
    if (reply.Status == IPStatus.Success)
    {
        sbuilder = new StringBuilder();
        sbuilder.Append(string.Format("Address: {0} ", reply.Address.ToString ()));
        sbuilder.Append(string.Format("RoundTrip time: {0} ", reply.RoundtripTime));
        sbuilder.Append(string.Format("Time to live: {0} ", reply.Options.Ttl));
        sbuilder.Append(string.Format("Don't fragment: {0} ", reply.Options.DontFragment));
        sbuilder.Append(string.Format("Buffer size: {0} ", reply.Buffer.Length));
        listBox1.Items.Add(sbuilder.ToString());
    }

}


也可以做异步的处理,修改button1_click,并添加PingCompletedCallBack方法


 

Code
private void button1_Click(object sender, EventArgs e)
{
    Ping p1 = new Ping();
    p1.PingCompleted += new PingCompletedEventHandler(this.PingCompletedCallBack);//设置PingCompleted事件处理程序
    p1.SendAsync(this.textBox1.Text, null);
}

private void PingCompletedCallBack(object sender, PingCompletedEventArgs e)
{
    if (e.Cancelled)
    {
        listBox1.Items.Add("Ping Canncel");
        return;
    }
    if (e.Error != null)
    {
        listBox1.Items.Add(e.Error.Message);
        return;

    }
    StringBuilder sbuilder;
    PingReply reply = e.Reply;
    if (reply.Status == IPStatus.Success)
    {
        sbuilder = new StringBuilder();
        sbuilder.Append(string.Format("Address: {0} ", reply.Address.ToString()));
        sbuilder.Append(string.Format("RoundTrip time: {0} ", reply.RoundtripTime));
        sbuilder.Append(string.Format("Time to live: {0} ", reply.Options.Ttl));
        sbuilder.Append(string.Format("Don't fragment: {0} ", reply.Options.DontFragment));
        sbuilder.Append(string.Format("Buffer size: {0} ", reply.Buffer.Length));
        listBox1.Items.Add(sbuilder.ToString());

    }
}


怎么样,相比1、2方式,3是不是简单的多呀。

作者:网络小筑
我的个人主页:http://www.iwebtrados.com.cn/
本文版权所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


精彩图集

赞助商链接