计算机网络
课程设计报告
子网掩码计算器
问题描述
在ARPANET的早期,IP地址的设计不太合理。它的空间利用率低,而且给每一个物理网络分配一个网络号会使路由表变得太大而导致网络性能变差。此外,两级的IP地址不够灵活,极大地影响了网络的实际运用。
因此,网络经过几十年的发展,渐渐形成了成熟完善的体制。无分类域间路由选择CIDR成为了目前因特网建议标准协议。
我们所设计出的程序,是根据用户输入的合法IP地址以及子网掩码,计算出该地址的类别、网络地址和广播地址的值、可分配主机地址范围和数量,以及最多可划分的子网个数。
概要设计(抽象数据类型定义)
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
详细设计(主要算法和函数间的调用关系)
1).算法实现
网络地址 = IP地址&子网掩码
广播地址 = ~网络地址+256 | IP地址
可用主机数 = pow(2,主机位数)-2
2).函数间的调用
运行程序后初始化窗体函数init(),输入ip和子网掩码后由计算按钮触发响应事件,调用getIPMask()函数计算要求得的网络地址,广播地址,可用主机数等各个值,在函数getIPMask()中通过调用getSubNet()函数计算子网分配方案;调用 getMask()函数转换十进制掩码为IP地址格式掩码,调用isValid()和isValidMask()函数判断输入的ip地址和子网掩码是否合法。
四、调试分析(调式过程中出现的问题及如何改正)
1).调试过程出现的问题
在ip地址和子网掩码输入出现空格,则得不到结果值,结果框会提示
2).如何改正
构造函数deSpace(),将输入的ip和子网掩码逐个字符过滤空格,问题就迎刃而解了。
五、心得体会
程权威(组长)----负责结构逻辑设计与源码写入
解淑凯-------------负责理论知识对接与算法设计
唐龙潭-------------负责课程设计报告与软件调试
此次课程设计,基于我们对《计算机网络》这门课程的实际学习,检验了我们对知识的理解程度。在未确定具体项目时,我们分析了所学过的理论知识,进行了此次设计的可行性研究。最终,我们将与IP地址相关的运用作为设计切入点,设计了一个实用性较强的IP地址分析工具。
这次设计最难的部分在于算法设计,将原本就复杂的IP地址分析计算方法转化为代码确实是一个挑战,我们也为此花费了不小的功夫。
值得一提的是,IP地址不是一串毫无规律的数字符号,对用户键入的IP地址进行合法性分析也是我们所考虑的重要内容,这极大减少了后期调试过程中难以避免的麻烦。
庆幸的是,我们的付出取得了较为满意的结果,对日后知识的学习,我们当然也平添了一份自信。
用户手册
输入合法的IP地址及子网掩码,点击“计算”,程序自动计算出相关信息,用户可以点击“复制”保留信息亦或点击“重置”重新输入。此外,用户也可以使用“帮助”按钮查询程序的具体使用方法。
规范化示例如图所示:
附录:(程序源码)
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
i