⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.java

📁 基于Jpcap开发的流量监控软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			return;
		}
		if (temp.equals("SEND")) {
			packetHandler.sendPacket(PacketHandler.PACKET_TYPE_ARP);
			return;
		}
		if (temp.equals("PACKET-LOGGER")) {
			this.startLogPacket(3, true, true);
			this.p_Center.add(this.initPacketLoggerPanel(this.getPacketLoggerThreads()));
			this.p_Center.updateUI();
			pack();
			((JButton) arg.getSource()).setEnabled(false);
			return;
		}
		if (temp.equals("PACKET-ANALYZER")) {
			this.startAnalyzePacket(this.getPacketAnalyzerThreads());
			this.p_Center.add(this.initPacketAnalyzerPanel(this.getPacketAnalyzerThreads()));
			this.p_Center.updateUI();
			pack();
			((JButton) arg.getSource()).setEnabled(false);
			return;
		}
		if (temp.equals("EXIT"))
			System.exit(0);
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String list[] = NIC.getInterfaceNames();
		MainFrm m = new MainFrm();
		m.logger.setVisible(true);
		InitialConfigFrame choose = m.new InitialConfigFrame(m);
		LabelUpdater updater=m.new LabelUpdater();
		choose.setInterfaceList(list);
		m.setLocationRelativeTo(null);
		choose.setLocationRelativeTo(m);
		m.setVisible(true);
		choose.setVisible(true);
		updater.setRefreshInSecond(m.getLabelUpdaterRefreshRate());
		updater.start();
		
	}
	class LabelUpdater extends Thread{
		private int refreshInSecond=10;
		private int usedMemory=0;
		private int previousDataReceived=0,currentDataReceived=0,currentSpeedrate=0;
		private LabelUpdater(){		
		}
	
		protected void setRefreshInSecond(int refreshInSecond) {
			this.refreshInSecond = refreshInSecond;
		}

		public void run(){
			int oriPacketSaved=0,prsdPacketSaved=0;
			while(true){
				try {
					Thread.currentThread().sleep(1000*refreshInSecond);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			lbl_TotalPacketReceived.setText(MainFrm.TOTAL_PACKET_RECEIVED+packetHandler.getPacketTotalReceived());
			usedMemory=(MainFrm.MAX_MEMORY-Math.round(Runtime.getRuntime().freeMemory()/1048576));
			pgb_MemoryUsage.setValue(usedMemory);
			pgb_MemoryUsage.setString(usedMemory+"M"+MainFrm.PROGRESSBAR_STRING);
			currentDataReceived=packetHandler.getTotalDataReceived();
			currentSpeedrate=(currentDataReceived-previousDataReceived)/refreshInSecond/1024;
			previousDataReceived=currentDataReceived;
			pgb_CurrentSpeedrateInKB.setValue(currentSpeedrate);
			pgb_CurrentSpeedrateInKB.setString(currentSpeedrate+MainFrm.PROGRESSBAR_MAXSPEED_STRING);
			lbl_PacketPool_Packet.setText(Integer.toString(pool.getPacketCount()));
			lbl_PacketPool_OriginalPacket.setText(Integer.toString(pool.getOriginalPacketCount()));
			lbl_PacketPool_ProcessedPacket.setText(Integer.toString(pool.getProcessedPacketCount()));
			if(packetLogger!=null){
				oriPacketSaved=prsdPacketSaved=0;
				for(int i=0;i<packetLogger.length;i++){
				lbl_PacketLogger_OriPacketReceived[i].setText(Integer.toString(packetLogger[i].getTotalReceivedOriPacket()));
				lbl_PacketLogger_PrsdPacketReceived[i].setText(Integer.toString(packetLogger[i].getTotalReceivedProPacket()));
				lbl_PacketLogger_OriPacketStack[i].setText(Integer.toString(packetLogger[i].getCurrentOriCapcity()));
				lbl_PacketLogger_PrsdPacketStack[i].setText(Integer.toString(packetLogger[i].getCurrentProCapcity()));
				oriPacketSaved+=packetLogger[i].getTotalSavedOriPacket();
				prsdPacketSaved+=packetLogger[i].getTotalSavedPropacket();
				}
				}
			if(packetAnalyzer!=null){
				for(int i=0;i<packetAnalyzer.length;i++){
					lbl_PrsPacket_Fetched[i].setText(Integer.toString(packetAnalyzer[i].getPacketFetched()));
					lbl_PrsPacket_Analyzed[i].setText(Integer.toString(packetAnalyzer[i].getPacketProcessed()));				
				}
			}
			if(operator!=null){
				lbl_MySQL_Status.setText(operator.isOnline()?"ONLINE":"OFFLINE");
				lbl_MySQL_OriPacketSaved.setText(Integer.toString(oriPacketSaved));
				lbl_MySQL_PrsPacketSaved.setText(Integer.toString(prsdPacketSaved));
			}			
		}
		}
	}
	class InitialConfigFrame extends JDialog implements ActionListener {
		JComboBox cbx_Interfaces,cbx_MaxiumSpeed,cbx_PacketAnalyzerThreads,cbx_PacketLoggerThreads,cbx_MainMonitorRefreshRate;
		JButton btn_OK, btn_Exit;
		JLabel lbl_Text;
		String[] InterfaceList;
		MainFrm m;

		InitialConfigFrame(MainFrm m) {
			super(m);
			this.m = m;
			this.setTitle("CHOOSE INTERFACE");
			this.setModal(true);
			this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
			this.setResizable(false);
			cbx_Interfaces = new JComboBox();
			btn_OK = new JButton("OK");
			btn_Exit = new JButton("EXIT");
			lbl_Text = new JLabel();
			lbl_Text.setHorizontalAlignment(SwingConstants.CENTER);
			cbx_MaxiumSpeed=new JComboBox();
			cbx_MaxiumSpeed.addItem("10M/S");
			cbx_MaxiumSpeed.addItem("100M/S");
			cbx_MaxiumSpeed.addItem("1G/S");
			cbx_PacketAnalyzerThreads=new JComboBox();
			cbx_PacketLoggerThreads=new JComboBox();
			cbx_MainMonitorRefreshRate=new JComboBox();
			for(int i=1;i<6;i++){
				cbx_PacketAnalyzerThreads.addItem(Integer.toString(i));
				cbx_PacketLoggerThreads.addItem(Integer.toString(i));
				cbx_MainMonitorRefreshRate.addItem(Integer.toString(i)+" SECOND");
			}
			cbx_MaxiumSpeed.setSelectedIndex(1);
			cbx_PacketAnalyzerThreads.setSelectedIndex(m.getPacketAnalyzerThreads()-1);
			cbx_PacketLoggerThreads.setSelectedIndex(m.getPacketLoggerThreads()-1);
			cbx_MainMonitorRefreshRate.setSelectedIndex(m.getLabelUpdaterRefreshRate()-1);
			// layout
			JPanel p_North = new JPanel(new GridLayout(2, 1));
			p_North.add(lbl_Text);
			p_North.add(cbx_Interfaces);
			JPanel p_Center=new JPanel(new GridLayout(4,2));
			p_Center.add(new JLabel("MAXIUM SPEED: "));
			p_Center.add(cbx_MaxiumSpeed);			
			p_Center.add(new JLabel("PACKET ANALYZER THREADS: "));
			p_Center.add(cbx_PacketAnalyzerThreads);
			p_Center.add(new JLabel("PACKET LOGGER THREADS: "));
			p_Center.add(cbx_PacketLoggerThreads);
			p_Center.add(new JLabel("MAIN MONITOR REFRESH RATE: "));
			p_Center.add(cbx_MainMonitorRefreshRate);
			JPanel p_South = new JPanel(new GridLayout(1, 2));
			p_South.add(btn_OK);
			p_South.add(btn_Exit);
			this.getContentPane().setLayout(new BorderLayout());
			this.getContentPane().add(p_North, BorderLayout.NORTH);
			this.getContentPane().add(p_Center, BorderLayout.CENTER);
			this.getContentPane().add(p_South, BorderLayout.SOUTH);
			btn_OK.addActionListener(this);
			btn_Exit.addActionListener(this);
			pack();
			m.msgProvider.addNewMsg("CHOOSEINTERFACE FRAME INIT DONE.");
		}

		private void setInterfaceList(final String[] list) {
			InterfaceList = list;
			lbl_Text.setText(list.length + " interface(s) found.");
			for (int i = 0; i < InterfaceList.length; i++) {
				cbx_Interfaces.addItem(InterfaceList[i]);
			}
			pack();
		}

		@Override
		public void actionPerformed(ActionEvent s) {
			if (s.getActionCommand().equals("OK")) {
				if (cbx_Interfaces.getSelectedItem().toString().indexOf(
						"Adapter for generic dialup and VPN capture") >= 0) {
					JOptionPane
							.showMessageDialog(
									this,
									"DEVICE [Adapter for generic dialup and VPN capture] IS NOT OPERATABLE.\nSELECT ANOTHER!",
									"WORNING", JOptionPane.ERROR_MESSAGE);
					return;
				}
				m.nic.setSelectedNIC(cbx_Interfaces.getSelectedIndex());
				m.packetHandler.setSelectedNIC(m.nic);
				m.setMaxiumSpeedInKB(cbx_MaxiumSpeed.getSelectedItem().toString());
				m.setPacketAnalyzerThreads(cbx_PacketAnalyzerThreads.getSelectedIndex()+1);
				m.setPacketLoggerThreads(cbx_PacketLoggerThreads.getSelectedIndex()+1);
				m.setLabelUpdaterRefreshRate(cbx_MainMonitorRefreshRate.getSelectedIndex()+1);
				m.packetHandler.startListening();
				this.setVisible(false);
			}
			if (s.getActionCommand().equals("EXIT"))
				System.exit(0);
		}
	}
	private int getPacketAnalyzerThreads() {
		return packetAnalyzerThreads;
	}

	private int getPacketLoggerThreads() {
		return packetLoggerThreads;
	}

	private int getLabelUpdaterRefreshRate() {
		return labelUpdaterRefreshRate;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -