Ping程序

一、实验目的:

通过做一个简易版的、图形化界面的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图如下:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 7.1 引言 “ping”这个名字源于声纳定位操作。Ping程序由Mike Muuss编写,目的是为了测试另一台主...
    张芳涛阅读 1,711评论 0 2
  • 小时候不太会玩电脑,一般自己玩的时候流程是:开始--附加功能--游戏与娱乐。倘若旁边有妹子在围观,我便会win+R...
    John_Tsemin阅读 1,412评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,908评论 18 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,510评论 0 17
  • 今天写点什么呢,忽然都忘了
    Annie1985阅读 190评论 0 0