2020年計算機(jī)網(wǎng)絡(luò)課程設(shè)計實驗報告_第1頁
2020年計算機(jī)網(wǎng)絡(luò)課程設(shè)計實驗報告_第2頁
2020年計算機(jī)網(wǎng)絡(luò)課程設(shè)計實驗報告_第3頁
2020年計算機(jī)網(wǎng)絡(luò)課程設(shè)計實驗報告_第4頁
2020年計算機(jī)網(wǎng)絡(luò)課程設(shè)計實驗報告_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

計算機(jī)網(wǎng)絡(luò)課程設(shè)

計實驗報告

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

中南大學(xué)課程設(shè)計報告

課程:計算機(jī)網(wǎng)絡(luò)課程設(shè)計

題目:基于Winpcap的網(wǎng)絡(luò)流量統(tǒng)計分析

指導(dǎo)教師:張偉

目錄

第一章總體設(shè)計

一、實體類設(shè)計

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

P3

二、功能類設(shè)計

P3

三、界面設(shè)計

P3

第二章詳細(xì)設(shè)計

一、實體類實現(xiàn)

P4

二、功能類實現(xiàn)

P4

三、界面實現(xiàn)

P5

第三章源代碼清單及說明

一、CaptureUtil.java--------P7

二、MyPcapPacketHandler.java--------P9

三、PacketMatch.java--------P9

四、Windows.java--------P13

第四章運行結(jié)果-----P19

第五章心得體會-----P21

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

第一章總體設(shè)計

一'實體類設(shè)計

TCP、UPD、ICMP、ARP、廣播數(shù)據(jù)包五個包的數(shù)據(jù)結(jié)構(gòu)設(shè)

二、功能類設(shè)計

⑴網(wǎng)卡獲取

⑵包的抓捕

⑶包的處理

三、界面設(shè)計

⑴布局

⑵按鈕功能連接

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

第二章第二章詳細(xì)設(shè)計

一、實體類實現(xiàn)

TCP、UPD、ICMP、ARP、廣播數(shù)據(jù)包五個包的數(shù)據(jù)結(jié)構(gòu)設(shè)

計。

本程序采用Java編寫,基于winlOpcapoWinlOpcap是

winpcap在win1()系統(tǒng)上的適用版本。Java對于winpcap使用

jnetpcap進(jìn)行支持。對于TCP、UPD、ICMP、ARP、廣播數(shù)據(jù)包

五種類型的包,在jnetpcap的jar包中大部分已經(jīng)封裝好了相關(guān)的

實體類型。對應(yīng)如下:

ARP實體類:work.Arp;

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

UPD實體類:work.Icmp;

IP實體類:work.Ip4;

TCP實體類:tocol.tcpip.Tcp;

UDP實體類:tocol.tcpip.Udp;

而對于其中的廣播數(shù)據(jù)包,其判斷我利用捕獲到的IP包的目的

地址進(jìn)行判斷,若其目的地址為55,則認(rèn)為其為廣

播數(shù)據(jù)包。

二、功能類實現(xiàn)

(1)網(wǎng)卡獲取

電腦上的包的發(fā)送與接受都得經(jīng)過網(wǎng)卡來進(jìn)行,因此為了完成

局域網(wǎng)數(shù)據(jù)包的捕獲和統(tǒng)計,我首先要做的是獲取到電腦上的網(wǎng)

卡列表,然后選擇一個網(wǎng)卡進(jìn)行包的捕獲。而相關(guān)代碼在jnetpcap

的官網(wǎng)的示例代碼1中能夠找到,從中能夠?qū)W習(xí)到的是jnetpcap

的各種使用方法。

在我電腦上能夠捕獲到三個網(wǎng)卡,一個是本機(jī)自身的物理網(wǎng)

卡,另外兩個是虛擬機(jī)模擬出的虛擬網(wǎng)卡。

選擇網(wǎng)卡VMwareVirtualEthernetAdapter

VMwareVirtualEthernetAdapter

RealtekEthernetController

VMwareVirtualEthernetAdapter

⑵包的抓捕

Jnetpcap中包的抓捕也是有著固定的格式的,這在官網(wǎng)的示例

代碼中也是能夠找到的,只要設(shè)置好相關(guān)的參數(shù),就能夠進(jìn)行抓

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

具體方法如下,利用Pcap對象的loop方法。就是實例化一個

Pcap對象,然后調(diào)用其loop方法。第一個參數(shù)argO代表循環(huán)次

數(shù),第二個參數(shù)就是傳入一個PcapPaketHandler或其子類的對

象,這個對象類型是要由我們自己編寫的對包處理的方法。

while(CaptureUtil.flag){

pcap.loop(lrmyhandler,"/njnetpcap");

}I|?<Object>intorg.jnetpcap.Pcap.loop(intargO,PcapPacketHandler<Object>argl.Objectarg2)

⑶包的處理

在這里對捕獲的包的處理我是編寫了一個PcapPacketHandler

的子類,然后重寫了nextPacket()方法。在這個方法里我把捕獲到

的包當(dāng)作參數(shù)傳遞個具體的處理方法

packetMatch.handlePacket(packet)o

packetMatch.handlePacket(packet)方法是由我自己編寫的。

handlePacket是packetMatch的一個靜態(tài)方法,能夠直接調(diào)用。在

這個方法里面,它會把捕獲到的包的包頭和TCP、UPD、ICMP、

ARP、廣播數(shù)據(jù)包五種類型的包的包頭進(jìn)行一一比較,以確認(rèn)是

否抓到了了相對應(yīng)的包。

這兒還用到的就是jnetpcap的內(nèi)部的一個方法,就是

packet.hasHeader(argO),經(jīng)過在argO傳入已在jnetpcap里封裝好的

包的類型的實例,能夠很好的判斷該包是屬于什么包類型的,是

TCP、UPD、ICMP、ARP還是廣播數(shù)據(jù)包。

然后內(nèi)部對于各種包的信息的輸出也有很好的支持,能夠直接

使用相應(yīng)的toString方法,就能夠輸出各種相關(guān)信息。

(4)網(wǎng)絡(luò)流量統(tǒng)計

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

對于各個捕獲到的包,分別針對各種類型的包設(shè)計了一個

Double變量用于統(tǒng)計其傳送過來相應(yīng)包頭的大小,并在停止抓包

后將統(tǒng)計的數(shù)據(jù)輸出在最下方的TextArea里面。

二、界面實現(xiàn)

本程序在設(shè)計GUI時使用了Java的一個很好的插件

WindowBuildero

(1)布局

一開始使用BorderLayout布局,安排好各個按鈕位置,文本

框位置。后來采用Absolutelayout,并將窗口大小固定化。

在布局的最上方是一個JToolBar的實例對象,其中放置有選擇

網(wǎng)卡、開始抓包、停止抓包、清空記錄等四個選項,中間是兩個

帶滾動條的多行文本框,左邊的用于顯示捕獲的包的列表,右邊

用于顯示左邊的我們選中的包的具體信息。最下方會在停止抓包

按鈕生效后輸出總的抓包情況。

如自叫二翼|回▼&<system*▼

<Palette

System_JA

年SelectionQMarquee

%Choosec...JUTabOrder

Containers

,JSplitPane,^JJTabbedP...

SJToolBar哈JlayeredP…

JDesktopP...i_JlnternalFr...

LayoutsI

儲AbsoluteI...FlowLayout

亙iBorderLay...牯GridLayout

GridBagLa...CardLayout

HBoxLayoutjsSpringLay...

FormLayout特MigLayout

"GroupLay...

Struts&Springs

”Components

^iJLabelJJTextfield

^JComboBoxJButton

&JCheckBox<?JRadioBut...

J-JToggleBu...'.^JTextArea

!3?JFormatte...JPassword...v

⑵按鈕功能連接

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

在布局的最上方是一個JToolBar的實例對象,其中放置有選擇

網(wǎng)卡、開始抓包、停止抓包、清空記錄等四個選項,其中選擇網(wǎng)

卡的功能具體由JComboBox(多文本選擇框)上的選項決定,這

個多文本選擇框監(jiān)聽著網(wǎng)卡獲取的方法,它會從該方法獲得一個

網(wǎng)卡列表,然后將其文本輸出。

開始抓包的方法所對應(yīng)的事件是抓包的事件,而且該抓包事件

是個并發(fā)的進(jìn)程。因為如果不將其設(shè)置為并發(fā)進(jìn)程,其會使其它

事件一直阻塞,甚至連停止抓包都做不到。停止抓包的事件其實

是改變了開始抓包中的一個標(biāo)志位,讓其為假。該標(biāo)志為為真,

抓包程序會一直進(jìn)行,該標(biāo)志為為假,抓包停止。

下方兩個文本框,左邊的文本框監(jiān)聽的是開始抓包這個事件,

當(dāng)這個事件開始,這個事件會向文本框傳輸捕獲到的包的列表,

然后讓其顯示。而右邊的文本框監(jiān)聽的是左邊文本框我們選中的

內(nèi)容的相應(yīng)事件。因為對于我們捕獲到的包我進(jìn)行了編號,當(dāng)我

們在左邊的文本框選中了一個包之后,左邊的文本框?qū)?yīng)的包的

序號會被右邊的文本框獲取,用于在一個列表中根據(jù)序號查找到

相對應(yīng)的包的詳細(xì)內(nèi)容,然后將其輸出。

統(tǒng)計功能的實現(xiàn)是在每個包的具體處理時,在處理包的方法類

中已經(jīng)有定義好幾個靜態(tài)變量用于計數(shù),每個包具體處理時,將

相對應(yīng)的包類型數(shù)量加一即可。還定義了其它的變量用于統(tǒng)計流

量大小,也是在每個包具體處理時,將相對應(yīng)的包的大小加到相

對應(yīng)的靜態(tài)變量上即可。

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

第三章源代碼清單及說明

CaptureUtil.java

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

〃該類負(fù)責(zé)網(wǎng)卡列表的獲取、包的捕獲、抓包程序的停止

packageutil;

importjava.util.ArrayList;

importjavax.swing.JOptionPane;

importorg.jnetpcap.Pcap;

importorg.jnetpcap.PcapIf;

importentity.Windows;

publicclassCaptureUtilextendsThread{

privatestaticbooleanflag=true;

publicstaticintnumbet-2;

privatestaticStringBuildererrbuf=newStringBuilder();//

用于存儲任何錯誤信息

〃此方法用于獲取設(shè)備上的網(wǎng)卡設(shè)施

publicstaticArrayList<PcapIf>CaptureNet(){

CaptureUtil./Z6z^=false;

〃下面有部分代碼來自jnetpcap官網(wǎng)的實例

ArrayList<PcapIf>alldevs=newArrayList<PcapIf>();//

用于存儲搜索到的網(wǎng)卡

//取得設(shè)備列表

intr=Pcap.findAHDevs(aWdevs,errbuf);

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

if(r==Pcap.NQTOK||alldevs.isEmptyO){

JOptionPane.s〃ovvMessage£)ia/og(nun,e〃0/toString(),"錯誤

”,JOptionPane.£RROR_MESSAGE);

returnnull;

}

returnalldevs;

)

〃此方法用于選取網(wǎng)卡并捕獲包

publicstaticvoidCapturePacket(ArrayList<PcapIf>alldevs){

CaptureUtil./7^=true;

Pcaplfdevice=andevs.get(〃",泌er);

/*System.out.printf("\nChoosing'%s'onyourbehalf:\n",device

.getDescription());*/

〃打開選中的設(shè)備

intsnaplen=Pcnp.DEFAULT_SNAPLEN;//默認(rèn)長度為65535

intflags=Pcap.MODE_PROMISCUOUS;II混雜模式,撲獲所

有類型的包

inttimeout=1()*1000;//1()secondsinmiHis

Pcappcap=Pcap.ope〃Live(device.getName(),snaplen,flags,

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

timeout,errbuf);

if(pcap==null){

”,JOptionPane.£RROR_MESSAGE);

return;

)

PacketMatchpacketMatch=PacketMatch.ge〃〃s/a〃ce();

MyPcapPacketHandler<Object>myhandler=new

MyPcapPacketHandler<Object>();

while(CaptureUtiiyZ<2g){

pcap.loop(l,myhandler,"/njnetpcap");

)

pcap.close();

)

publicvoidrun(){

CaptureUti\.CapturePacket(C^tureVti\.CaptureNetOy,

)

publicstaticvoidStopCapturePacket(){

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

CaptureUtiL/Zag=false;

}

publicstaticvoidClearPacket(){

PacketMatch.numherOfPacket=0;

PacketMatch..clear。;

Windows./〃e〃7s.clear();

PacketMatch.〃〃加Z?erQ加”p=0;

PacketMatch.〃“〃2〃erQ/7bp=O;

PacketMatch./?”〃仍erQ/L4=();

PacketMatch./?”〃仍erQ/7c〃w=();

P2LcketMatch.numherOfWideSpread=0;

}

}

MyPcapPacketHandler.java

//該類是PcapPacketHandler的子類,重寫了nextPacket方法

packageutil;

importorg.jnetpcap.packet.PcapPacket;

importorg.jnetpcap.packet.PcapPacketHandler;

publicclassMyPcapPacketHandler<Object>implements

PcapPacketHandler<Object>{

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

@Override

publicvoidnextPacket(PcapPacketpacket,Objectargl){

PacketMatchpacketMatch=PacketMatch.ge〃九s/a〃ce();

packetMatch.handlePacket(packet);

PacketMatch.java

〃該類是包處理

packageutil;

importjava.util.HashMap;

importorg.jnetpcap.packet.PcapPacket;

importwork.Arp;

importwork.Icmp;

importwork.Ip4;

importtocol.tcpip.Tcp;

importtocol.tcpip.Udp;

importentity.Windows;

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

publicclassPacketMatch{

publicstaticHashMaphm=newHashMapO;

publicstaticintnumberOfPacket=0;

privatestaticPacketMatchpm;

privateIcmpicmp=newIcmp();

privateTcptcp=newTcp();

privateUdpudp=newUdp();

privateArparp=newArp();

privateIp4ip4=newIp4();

publicstaticdoubletotalOfIcmp=0;

publicstaticdoubletotalOfTcp=0;

publicstaticdoubletotalOfUdp=0;

publicstaticdoubletotalOfArp=0;

publicstaticdoubletotalOfSpread=0;

publicstaticdoubletota10flp=0;

publicstaticintnumberOfWideSpread=0;

publicstaticintnumberOfUdp=0;

publicstaticintnumberOfTcp=0;

publicstaticintnumberOflcmp=0;

publicstaticintnumberOfArp=0;

publicstaticPacketMatchgetlnstance(){

if(pm==null){

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

pm=newPacketMatch();

)

returnpm;

)

publicvoidhandlePacket(PcapPacketpacket){

〃以下四個包都已能夠正確捕獲

PacketMatch.totalOfIp+=packet.getTotalSize()/(1024.0*1024.

0);

if(packet.hasHeader(icmp)){

handlelcmp(packet);

)

if(packet.hasHeader(arp)){

handleArp(packet);

)

if(packet.hasHeader(tcp)){

handleTcp(packet);

)

if(packet.hasHeader(udp)){

handleUdp(packet);

)

〃廣播數(shù)據(jù)包的捕獲

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

if(packet.hasHeader(ip4)){

handlelp4(packet);

/*以下為實驗IP地址的獲取

packet.getHeader(ip4);

System.out.println(ip4.toString());

byte[]destinations=newbyte[4];

ip4.destinationToByteArray(destinations);

byte[]sources=newbyte[4];

ip4.sourceToByteArray(sources);

System.out.println("ip4destination:'1+destinations);

System.out.println(nip4resource:n+sources);

System.out.println(Hip4

destination:n+ip4.destinationToInt());

System.out.println(,,ip4

resource:H+ip4.sourceToInt());

System.out.println(Hip4

destination:,,+PacketMToIp(ip4.destinationToInt()));

System.out.println(nip4

resource:,,+PacketMToIp(ip4.sourceToInt()));

*/

)

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

)

privatevoidhandleIp4(PcapPacketpacket){

packet.getHeader(ip4);

if(PacketMToIp(ip4.destinationToInt()).equals('*255.2

55.255.255")){

〃這是一個廣播數(shù)據(jù)包

System.out.println("收到一個廣播數(shù)據(jù)包

”);

Windows.lItems.add(numberOfPacket,

播數(shù)據(jù)包”);

hm.put(numberOfPacket,"這是一個廣播

數(shù)據(jù)包!”);

numberOfWideSpread++;

totalOfSpread+=ip4.getLength()/l024.0;

numberOfPacket++;

)

)

privatevoidhandleUdp(PcapPacketpacket){

packet.getHeader(udp);

System.out.printlnC'udp來源端口

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

n+udp.toString());

hm.put(numberOfPacket,udp.toStringO);

Windows.lItems.add(numberOfPacket,,,udpn);

numberOfUdp++;

totalOfUdp+=udp.getLength()/l024.0;

numberOfPacket++;

)

privatevoidhandleTcp(PcapPacketpacket){

packet.getHeader(tcp);

System.out.println(tcp.toStringO);

hm.put(numberOfPacket,tcp.toStringO);

Windows.lItems.add(numberOfPacket,"tcp");

numberOfTcp++;

totalOfTcp+=tcp.getLength()/1024.0;

numberOfPacket++;

}

privatevoidhandleIcmp(PcapPacketpacket){

packet.getHeader(icmp);

System.out.printlnC4cmpf^icmp.toStringO);

hm.put(numberOfPacket,icmp.toStringQ);

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

Windows.lItems.add(numberOfPacket,"icmp'*);

numberOfIcmp++;

totalOfIcmp+=icmp.getLength()/1024.0;

numberOfPacket++;

}

privatevoidhandleArp(PcapPacketpacket){

packet.getHeader(arp);

System.out.printlnC,arp:**+arp.toStringO);

hm.put(numberOfPacket,arp.toStringO);

Windows.lItems.add(numberOfPacket,"arpn);

numberOfArp++;

totalOfArp+=arp.getLength()/1024.0;

numberOfPacket++;

)

〃以下函數(shù)將Int類型轉(zhuǎn)化為Ip地址

publicstaticStringintToIp(intiplnt){

returnnew

StringBuilder().append(((ipInt?24)&0xff)).append(,.,).append

((ipInt?16)&0xff).append(,.,).append

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

((ipInt?8)&0xff).append(,.*).append

((ipInt&Oxff)).toString();

)

)

Windows.java

//該類是GUI界面設(shè)計

packageentity;

importjava.awt.Color;

importjava.awt.EventQueue;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.ItemEvent;

importjava.awt.event.ItemListener;

importjava.util.ArrayList;

importjavax.swing.AbstractAction;

importjavax.swing.Action;

importjavax.swing.BorderFactory;

importjavax.swing.DefaultListModel;

importjavax.swing.JButton;

importjavax.swing.JComboBox;

importjavax.swing.JFrame;

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

importjavax.swing.JList;

importjavax.swing.JPanel;

importjavax.swing.JScrollPane;

importjavax.swing.JTextArea;

importjavax.swing.JToolBar;

importjavax.swing.border.Border;

importjavax.swing.border.EmptyBorder;

importjavax.swing.event.ListSelectionEvent;

importjavax.swing.event.ListSelectionListener;

importorg.jnetpcap.PcapIf;

importutil.CaptureUtil;

importutil.PacketMatch;

publicclassWindowsextendsJFrame{

privateJPanelcontentPane;

privatefinalActionaction=newSwingAction();

privateflnalActionaction_l=newSwingAction_l();

privatefinalActionaction_2=newSwingAction_2();

publicstaticDefaultListModellltems=new

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

DefaultListModelQ;

privateJListlist=newJList(lItems);

privatefinalActionaction_3=newSwingAction_3();

privateJScrollPanejspl=newJScrollPane(list);

privateJTextAreatextArea=newJTextArea();

privateJScrollPanejsp2=newJScrollPane(textArea);

privateJTextAreatextArea_l=newJTextArea();

/**

*Launchtheapplication.

*/

publicstaticvoidmain(String[]args){

EventQueue.invokeLater(newRunnable(){

publicvoidrun(){

try(

Windowsframe=newWindows();

frame.setVisible(true);

}catch(Exceptione){

e.printStackTraceQ;

)

)

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

});

)

/**

*Createtheframe.

*/

publicWindows(){

setTitle(n\u6293\u5305");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100,100,692,477);

contentPane=newJPanel();

contentPane.setBorder(newEmptyBorder(5,5,5,5));

setContentPane(contentPane);

contentPane.setLayout(null);

this.setResizable(false);

JToolBartoolBar=newJToolBar();

toolBar.setBounds(5,5,666,23);

contentPane.add(toolBar);

JButtonbutton=new

JButton("\u9009\u62E9\u7F51\u536r,);

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

toolBar.add(button);

finalJComboBoxcomboBox=newJComboBox();

comboBox.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

String

net=(String)comboBox.getSelectedItem();

ArrayList<PcapIf>

alldevs=CaptureUtil.CaptureNet();

inti=0;

System.out.println(net);

for(Pcaplfdevice:alldevs){

if(net.equals(device.getDescription())){

CaptureUtil.number=i;

System.out.println(CaptureUtil.number+n:',+device.getDesc

ription());

CaptureUtil.StopCapturePacketO;

)

i++;

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

)

)

});

comboBox.addItemListener(newItemListener(){

publicvoiditemStateChanged(ItemEventargO){

)

));

toolBar.add(comboBox);

JButtonbutton_l=new

JButton(n\u5F00\u59CB\u6293\u5305n);

button_l.setAction(action_l);

toolBar.add(button_l);

JButtonbutton_2=newJButton("停止抓包”);

button_2.setAction(action_2);

button_2.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEventargO){

)

));

toolBar.add(button_2);

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

JButtonbutton_3=new

JButtonC'\u6E05\u7A7A\u8BB0\u5F55n);

button_3.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

)

));

button_3.setAction(action_3);

toolBar.add(button_3);

Borderbrd=BorderFactory.createMatteBorder(1,1,2,

2,Color.black);

list.setBorder(brd);

list.addListSelectionListener(new

ListSelectionListener(){

publicvoidvalueChanged(ListSelectionEvent

argO){

//TODOAuto-generatedmethodstub

textArea.setText(',n);

textArea.append((String)PacketMatch.hm.get(list.getSelecte

dlndex()));

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

〃以下兩行用于檢測

//System.out.println(list.getSelectedIndex());

//

System.out.println((String)PacketMatch.hm.get(list.getSelect

edlndexQ));

)

));

jspl.setBounds(5,28,258,343);

contentPane.add(jspl);

jsp2.setBounds(263,28,408,343);

contentPane.add(jsp2);

textArea_l.setBounds(5,371,666,67);

contentPane.add(textArea_l);

ArrayList<PcapIf>alldevs=CaptureUtil.CaptureNet();

for(Pcaplfdevice:alldevs){

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

comboBox.addItem(device.getDescription());

)

)

privateclassSwingActionextendsAbstractAction{

publicSwingAction(){

putValue(NAME,“選擇網(wǎng)卡”);

putValue(SHORT_DESCRIPTION,'Someshort

description'*);

)

publicvoidactionPerformed(ActionEvente){

ArrayList<PcapIf>

alldevs=CaptureUtil.CaptureNet();

if(alldevs!=null){

System.out.println('*Networkdeviceshasbeen

found:'*);

inti=1;

for(Pcaplfdevice:alldevs){

System.out.println(n第"+(i++)+”個網(wǎng)卡名

字:'*+device.getName()+'*\n信息:"+device

.getDescription());

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

)

)

)

)

privateclassSwingAction_lextendsAbstractAction{

publicSwingAction_l(){

putVahie(NAME,”開始抓包”);

putValue(SHORT_DESCRIPTION,'Someshort

description'*);

)

publicvoidactionPerformed(ActionEvente){

〃抓包線程

(newCaptureUtil()).start();

)

}

privateclassSwingAction_2extendsAbstractAction{

publicSwingAction_2(){

putVahie(NAME,"停止抓包”);

putValue(SHORT_DESCRIPTION,'Someshort

description");

)

publicvoidactionPerformed(ActionEvente){

文檔僅供參考,不當(dāng)之處,請聯(lián)系改正。

CaptureUtil.StopCapturePacket();

textArea_l.setText('*n);

String

message=nTcp:"+PacketMatch.numberOfTcp+”包

,,+PacketMatch.totalOfTcp+',KB”+

"Udp:"+PacketMatch.numberOfUdp+'1包

n+PacketMatch.totalOfUdp+"KB,,+,,\n"+

,,Icmp:',+PacketMatch.numberOfIcmp+n包

n+PacketMatch.totalOfIcmp+“KB"+

,,Arp:,,+PacketMatch.numberOfArp+n包

,,+PacketMatch.totalOfArp+,,KB”+“\n"+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論