版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年航空公司飛機(jī)采購合同標(biāo)的與性能要求
- 電橋法課程設(shè)計
- 2024年綠色建筑采光施工物業(yè)合同3篇
- 2024年企業(yè)培訓(xùn)課程評估與改進(jìn)合同范本3篇
- 2024年度大米質(zhì)量認(rèn)證與品牌價值評估合同3篇
- 2024年版公寓食堂托管3篇
- 2024年生物科技研究合作與成果轉(zhuǎn)化合同
- 情景化智能燈光課程設(shè)計
- 瑜伽場館運營課程設(shè)計
- 現(xiàn)代詩課程設(shè)計
- 唐山路北區(qū)2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)檢測卷(含答案)
- 臨床輸血與檢驗課件
- 企業(yè)管理的決策與解決問題
- 平潭港區(qū)進(jìn)港航道及港池維護(hù)性疏浚工程環(huán)境影響報告
- 366天平和生活冥想手冊
- 空靈鼓社團(tuán)教學(xué)計劃
- 真題解析1-2021年上海跨學(xué)科案例分析(茭白案例)
- 全國主要城市氣象參數(shù)
- 宣城消防鋼樓梯施工方案
- 框架柱的配筋計算二
評論
0/150
提交評論