基于单片机的电子秤设计课程设计-毕业论文.doc

上传人:工**** 文档编号:562014358 上传时间:2022-10-28 格式:DOC 页数:26 大小:402.59KB
返回 下载 相关 举报
基于单片机的电子秤设计课程设计-毕业论文.doc_第1页
第1页 / 共26页
基于单片机的电子秤设计课程设计-毕业论文.doc_第2页
第2页 / 共26页
基于单片机的电子秤设计课程设计-毕业论文.doc_第3页
第3页 / 共26页
基于单片机的电子秤设计课程设计-毕业论文.doc_第4页
第4页 / 共26页
基于单片机的电子秤设计课程设计-毕业论文.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《基于单片机的电子秤设计课程设计-毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的电子秤设计课程设计-毕业论文.doc(26页珍藏版)》请在金锄头文库上搜索。

1、 计算机网络课程设计报告题 目 端口检测及IP包的捕获解析 学生姓名 班级学号 指导教师 设计时间 第一节 实验平台和器材准备11.2 实验平台1第二节 需求分析12.1 实验要求12.1.1 基本要求12.1.3 详细功能要求1第三节、概要设计13.1 端口监听13.2 IP包的捕获与解析2第四节 详细设计34.1端口监听程序框图34.2端口监听关键代码34.2 IP包捕获与解析程序框图44.2.1 写日志函数44.2.1 IP包捕获与分析5第五节 实验结果分析95.1 实验结果展示95.1.1 端口监听95.1.2 IP包的捕获与解析析115.1 实验结果分析125.1.1 端口监听125

2、.1.2 IP包的捕获与解析13第六节 错误调试146.1 数据库连接错误146.1.1 解决方案146.2 POST乱码解决方式156.2.1 错误表现156.2.2解决方案156.3 Socket连接错误166.3.1 错误表现166.3.2产生错误的原因166.3.3 解决方式16第八节 实验总结0第九节 参考资料1附件:2I第一节 实验平台和器材准备1.2 实验平台软件开发环境Eclipse其他工具Jnetpcap,winpcap第二节 需求分析2.1 实验要求2.1.1 基本要求本次实验的要求在网络环境,实现端口检测以及捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上

3、,并同时写入日志文件。2.1.3 详细功能要求l)实现本机以及局域网内计算机的端口监控。2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。3)形成记录结果的日志文件。第三节、概要设计3.1 端口监听创建一个服务器s,依次开放065535间所有的端口,当开放过程抛出IO流异常e,并且e是.BindException的一个实例时,输出该端口被占用。3.2 IP包的捕获与解析在Java平台下通过第三方包来进行底层网络嗅探。使用JnetPCAP对接WinPCAP来截获网卡

4、数据包,分为四步走。第一步:获取网卡列表。通过Pcap.findAllDevs(alldevs, errbuf) 这个静态方法将所有本机网卡加入到alldevs的List<PcapIf >中。然后选择一个网卡进行监听。第二步:打开连接调用Pcap.openLive(device.getName(), snaplen, flags, timeout, errbuf)静态方法,返回一个Pcap对象。其中5个参数分别表示设备的系统名称(不是设备别名)、每次捕捉的数据量、捕捉方式、超时和错误信息缓冲区。第三步:监听抓包调用pcap.loop(int cnt, JPacketHandler&l

5、t;T> handler, T user) 方法即可进行监听,在loop方法的参数中有两点需要关注,第一点是用户指定的数据包分析器,在之后的文章中将详细介绍;第二点是一个泛型参数,表示传输给分析器的用户指定类型的消息。第四步:数据包分析使用继承JPacketHandler来实现自己的处理方法。在JPacketHandler有一个nextPacket(JPacket packet, T user) 方法,这是典型的通过事件机制来实现处理数据包的方法。每当Pcap嗅探到一个数据包后,调用用户之前绑定的分析器中的nextPacket方法进行处理。注意这个方法是阻塞的,也就避免了潜在的同步问题。

6、传进的JPacket参数包含了这个数据包中的所有信息,通过不同的内置Header分析器可以分析不同的协议。写入日志函数使用Java写入文件相关语句,将输出流中的字节截取并写入到TXT文件中。第四节 详细设计4.1端口监听程序框图是E instanceof .BindException?I=0是否开始I65535?结束否输出该端口被占用ServerSocket s = new ServerSocket(i)s.close()4.2端口监听关键代码for(int i=0; i=类似,是运算符,判断其左边对象是否为其右边类的实例 if(e instanceof .BindException) Sys

7、tem.out.println(i+ aready in use.); else System.err.println( other error.);4.2 IP包捕获与解析程序框图4.2.1 写日志函数1.写日志函数程序框图输入要写入的字符串iFile file = new File(D:javacatchpage.txt)是否开始发生IO异常?结束写入文件相关语句输出异常信息2.写日志函数关键代码public static void filewrite( String i)File file = new File(D:javacatchpage.txt);String ip=i;Strin

8、g enter= = ;try file.createNewFile();FileOutputStream in =new FileOutputStream(file);in.write(enter.getBytes(),0,enter.getBytes().length);in.write(ip.getBytes(),0,ip.getBytes().length);in.flush();/刷新文件in.close();/文件读出部分/*FileReader fr=new FileReader(D:javacatchpage.txt); BufferedReader br=new Buffer

9、edReader(fr); while(br.readLine()!=null) String s=br.readLine(); System.out.println(s); br.close();*/ catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();4.2.1 IP包捕获与分析1.IP包捕获与分析程序框图输出所有网卡信息输出异常信息新建Pcapif类列表,构造一个可以被Pcap.openLive()打开的网络设备列表,新建一个StringBuider对象是否否是打开连接成功?开始调用Pcap

10、.openLive( )打开连接设备列表构造不成功|为空?将解析后的包内容调用toString( )函数转为字符串格式,调用写入日志函数结束选择要监听网卡号,设置截取包大小,截取模式,超时时间进入抓包循环,抓包成功后调用nextPacket( )解析包输出异常信息pcap.close()2.IP捕获与分析关键代码public static void main(String args) throws InterruptedException /抛出中断异常/Pcapif类用一个模拟链表来表示类List alldevs = new ArrayList(); StringBuilder errbuf

11、 = new StringBuilder();/StringBuilder课新建一个可变长的字符串int r = Pcap.findAllDevs(alldevs, errbuf);/构造一个可以被Pcap.openLive()打开的网络设备列表,返回1表示失败,0成功if (r = Pcap.NOT_OK | alldevs.isEmpty() /NOT_OK=-1System.err.printf(Cant read list of devices, error is %s,errbuf.toString();return;for (PcapIf pif : alldevs) System

12、.out.println(pif.getName();/输出网卡名称PcapIf pif = alldevs.get(2);/选择要监控的设备号 /2.打开连接,返回一个Pcap对象int snaplen = 64 * 1024; / 截取包的大小int flags = Pcap.MODE_PROMISCUOUS; / 决定模式是否为混杂,1表示混杂,0是非混杂int timeout = 10 * 1000; /设置超时,单位是毫秒/Pcap.openLive()打开一个从网络中及时捕获的连接Pcap pcap = Pcap.openLive(pif.getName(), snaplen, flags, timeout,errbuf);/errbuf错误缓冲池,snaplen每次捕捉的数据量,flags捕捉方式if (pcap = null) System.err.printf(Error while opening devi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号