- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA网络课程设计
一、实验要求 编制程序,监控网络,捕获一段时间内网络上的IP数据包,按数据包的源地址统计出该源地址在该时间段发出的IP包的个数,将其写入日志文件中或者用图形表示出来。二、实验思路 用jpcap捕获到IP数据包,然后写入本地,最后用PHP读取本地文件,将数据做成柱状图。三、部分代码与分析import net.sourceforge.jpcap.capture.*;import net.sourceforge.jpcap.net.*;import java.io.IOException;import java.io.RandomAccessFile;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;public class CapturePacketTest implements RawPacketListener,PacketListener{ public static int number = 1; MapString, String statics = new HashMapString, String(); public static void main(String[] args)throws Exception{ PacketCapture pcap = new PacketCapture(); //查看所有的网卡 String[] capDevices = PacketCapture.lookupDevices(); int capdevice_num = capDevices.length; //打印网卡列表 System.out.println(---------网卡列表:-------------------------); for(int i = 0 ;icapdevice_num;i++){ System.out.println(第+(i+1)+号网卡:\n+capDevices[i]); } System.out.println(---------默认采用6号网卡,下面开始捕获:----------); //暂停2秒 for(int i =0 ;i20;i++){ Thread.sleep (100); System.out.print(); } System.out.println(); //获取第6号网卡的物理地址,我的是6号网卡,你的并不一定是,在网卡列表中查看你说用的网卡,并选择序号,capDevices[0]表示1号网卡 String capdevice_6 = capDevices[5].split(\n)[0]; // 开始捕获,并设置为混杂模式 pcap.open(capdevice_6,true); //递归调用 CapturePacketTest t1= new CapturePacketTest(); //原始数据包监听 pcap.addRawPacketListener(t1); //数据包监听 pcap.addPacketListener(t1); //结束捕获 pcap.capture(-1); } //接口实现,没用 public void rawPacketArrived(RawPacket rawPacket) { // TODO 自动生成的方法存根 } //当获取到IP数据包 public void packetArrived(Packet packet) { //判断是否是IP数据包,如果是,则进行统计 if( packet instanceof IPPacket){ IPPacket ippacket = ((IPPacket)packet); //获取当前时间 Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat(HH:mm:ss); String current_time=sdf.format(d); //String echo = IP包个数:+(number++)+||当前时间(+current_time+)::源地址(+ippacket.getSourceAddress()+)--目的地址(+ippacket.getSourceAddress()+); String echo = Number of IP Package:+(number++)+||Current Time(+current_time+)::Source IP:(+ippacket.getSourceAddress()+)--Destination IP(
文档评论(0)