美文网首页
Ping程序

Ping程序

作者: jian321 | 来源:发表于2017-11-05 12:14 被阅读0次
    一、实验目的:

    通过做一个简易版的、图形化界面的ping程序,进一步学习ICMP协议相关内容,同时加强网络编程的动手实践能力,以及翻阅相关资料解决问题能力。

    二、实验步骤:

    1、图形化界面布局
    2、功能设计
    3、具体实现

    三、实验详细设计:

    1、图像化界面
    步骤一:环境的搭建,使用eclipse的windownbuilder插件,快速构建界面。如下图:


    2、功能设计
    设置两个功能按钮 Ping 和 Stop,一个文本框 IP Address,用来获取要测试的 IP 地址,四个 spinner 组件,用来获取测试的时延、数据包大小、请求次数等参数。一个 table 组件用来显示动态信息。界面底部的 label 组件显示数据分析结果。

    3、具体实现
    Ping功能:按下按钮,通过调用cmd实现ping测试,获得控制台的数据,进行处理显示在table组件里。
    Stop功能:按下按钮,测试停止,通过设置一个全局控制变量来实现控制。
    关键代码如下:
    测试参数获取
    String timeout = sp_time.getValue().toString();
    String times = sp_echo.getValue().toString();
    String size = sp_size.getValue().toString();
    

    调用cmd

    command = "ping " + ip + " -n " + times + " -w " + timeout + " -l " +size;
    Process pro = Runtime.getRuntime().exec(command);
    BufferedReader buf = new BufferedReader
    (new InputStreamReader(pro.getInputStream()));
    
    四、实验总结:

    按下Ping按钮时,只能等待它执行完才能按stop按钮?
    解决:通过创建一个线程,执行ping功能,就能保证stop键有效,实现中途停止测试的预期效果。
    实验遗留问题:
    一、界面加载的时候不能全部加载出来,尝试改变一些布置组件代码的顺序就有点效果,可能是布局问题<父容器使用的是绝对布局>。
    二、连续按下ping键,在数据显示的时候会出现数据覆盖现象,可能是进程间的同步问题。设置了一个全局变量data二维数组来储存从cmd控制台获得的数据,尝试每次ping操作后清空数组data,但没效果。
    实验过程gif图如下:

    相关文章

      网友评论

          本文标题:Ping程序

          本文链接:https://www.haomeiwen.com/subject/ruucmxtx.html