一、实验内容:
一、必做:
(1)、获取本机的网卡信息,功能要求通过按钮显示详细信息。
二、选做:
(1)、修改本机的ip地址,子网掩码,默认网关以及DNS
(2)、添加功能按键,实现禁止wifi和打开wifi功能。
二、实验目的:
1、通过具体操作的作业任务,加强对相关理论知识的理解,同时培养动手实践能力,以及查找资料独立解决问题的能力。
2、培养学习兴趣。
三、实验过程:
一、实验准备:
1、Eclipse编译工具
2、所用语言:java
二、实验预期效果:
三、实验设计:
1、构建图形界面
2、模块划分:(1):网卡基本信息 (2):IPv4设置 (3):功能开关
3、具体实现:java的GUI图形用户界面知识的运用,通过调用AWT和Swing工具包,以及运用API的相关类。
四、模块实现
一、网卡基本信息显示:
(1)创建Frame父容器,往容器里添加组件和其他二级容器,例如:JPanel容器,添加JButton组件,关联监听程序(动作事件)。JTextField文本组件又来读取文本框内的内容。
(2)主要通过调用NetworkInterface类,得到本机的相关接口信息:NetworkInterface.getNetworkInterfaces()获得本机所有接口,通过迭代器获得每一个接口的对象,Object.getHardwareAddress()获得接口的物理地址,Object.getName()获得接口的名称等等。
主要代码如下:
获得本机所有接口
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
for(;e.hasMoreElements();){
NetworkInterface ip= e.nextElement();
......
}
添加动作监听事件
bt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String item = (String)comboBox.getSelectedItem();
try {
new Print().print(item);
} catch (Throwable e1) {
e1.printStackTrace();
}
}
});
问题记录:
1、布局问题:出现容器叠加情况,结果只显示最后一个添加的容器。
2、如何使容器摆放在你想摆放的位置。
目前解决方案:
1、将父容器的布局属性Layour设置为null,再将容器的setBounds属性设置要摆放的位置参数(container.setBounds(para))。更多的设置可以参考Java在线帮助文档。
二、IPv4设置:
(1)主要是通过java创建进程调用系统的cmd,执行相关命令,来实现对本机的IP修改。具体命令netsh interface ip set address static addr=xx mask=xxx gateway=xxx 静态修改本机的ip地址、子网掩码、默认网关 netsh interface dns address static xxx 修改本机的DNS参数。主要代码如下:
设置IPv4
process = Runtime.getRuntime().exec(setadr);
bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line =bufferedReader.readLine() ;
问题记录:
1、权限问题:运用这种方法需要管理员的权限才能实现
解决方案:
以管理员的身份运行就ok了
三、功能开关:
未实现:只记录下想法:同设置本机IPv4一样,通过命令行来实现。
五、实验总结
1、加深了对java语言的深入学习,学习了相关的API知识,以及一些cmd下的命令知识。
2、对网络中IP的作用的认识有了更客观的理解,以及初涉了网络的通信的实现机理。以及对一些网络专用术语子网掩码,网关,MAC有了深一步理解。