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

📄 multiplehosts.java

📁 snmp zip 包开发snmp协议
💻 JAVA
字号:
// NAME//      $RCSfile: MultipleHosts.java,v $// DESCRIPTION//      [given below in javadoc format]// DELTA//      $Revision: 1.3 $// CREATED//      $Date: 2006/01/17 18:02:47 $// COPYRIGHT//      Westhawk Ltd// TO DO///* * Copyright (C) 2002 - 2006 by Westhawk Ltd * <a href="www.westhawk.co.uk">www.westhawk.co.uk</a> * * Permission to use, copy, modify, and distribute this software * for any purpose and without fee is hereby granted, provided * that the above copyright notices appear in all copies and that * both the copyright notice and this permission notice appear in * supporting documentation. * This software is provided "as is" without express or implied * warranty. * author <a href="mailto:snmp@westhawk.co.uk">Tim Panton</a> */ package uk.co.westhawk.examplev1;import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import uk.co.westhawk.snmp.stack.*;import uk.co.westhawk.snmp.pdu.*;/** * This application polls a number of hosts for their sysUptime and * measures the throughput (PDUs per second). * The UI shows the hosts, the number of request sent and the sysUptime.  * * @author <a href="mailto:thp@westhawk.co.uk">Tim Panton</a> * @version $Revision: 1.3 $ $Date: 2006/01/17 18:02:47 $ */public class MultipleHosts extends JPanel    implements Observer, ActionListener{    private final static String version_id =            "@(#)$Id: MultipleHosts.java,v 1.3 2006/01/17 18:02:47 birgit Exp $ Copyright Westhawk Ltd";    private String host0;    private String host1;    private String host2;    private String host3;    private String host4;    private SnmpContext[] contexts = new SnmpContext[5];    private String[] vals = new String[5];    private JLabel hostL[] = new JLabel[5];    private JLabel hostV[] = new JLabel[5];    private JLabel hostC[] = new JLabel[5];    private int[] counts = new int[5];    private javax.swing.Timer tock = new javax.swing.Timer(200, this);    private BorderLayout borderLayout3 = new BorderLayout();    private JPanel hostPanel = new JPanel();    private GridLayout gridLayout2 = new GridLayout();    private JPanel host4panel = new JPanel();    private JLabel hostV4 = new JLabel();    private JLabel hostC4 = new JLabel();    private JLabel hostL4 = new JLabel();    private GridLayout gridLayout3 = new GridLayout();    private JPanel host3panel = new JPanel();    private JLabel hostC3 = new JLabel();    private JLabel hostL3 = new JLabel();    private JLabel hostV3 = new JLabel();    private JLabel jLabel4 = new JLabel();    private GridLayout gridLayout4 = new GridLayout();    private JPanel host2panel = new JPanel();    private JLabel hostC2 = new JLabel();    private JLabel hostL2 = new JLabel();    private JLabel hostV2 = new JLabel();    private JLabel jLabel5 = new JLabel();    private GridLayout gridLayout5 = new GridLayout();    private JPanel host1panel = new JPanel();    private JLabel hostC1 = new JLabel();    private JLabel hostL1 = new JLabel();    private JLabel hostV1 = new JLabel();    private JLabel jLabel6 = new JLabel();    private GridLayout gridLayout6 = new GridLayout();    private JPanel host0panel = new JPanel();    private JLabel hostC0 = new JLabel();    private JLabel hostL0 = new JLabel();    private JLabel hostV0 = new JLabel();    private JLabel jLabel7 = new JLabel();    private GridLayout gridLayout1 = new GridLayout();    private JLabel jLabel10 = new JLabel();    private JLabel errLine = new JLabel();    private JPanel topPanel = new JPanel();    private JLabel jLabel1 = new JLabel();    private BorderLayout borderLayout2 = new BorderLayout();    private JLabel speedL = new JLabel();    private JPanel headerPanel = new JPanel();    private GridLayout gridLayout7 = new GridLayout();    private JLabel jLabel2 = new JLabel();    private JLabel jLabel3 = new JLabel();    private JLabel jLabel8 = new JLabel();    private JLabel jLabel9 = new JLabel();    private Date then;    private long ocount = 0;    private Util        util;/** * Constructor. * * @param propertiesFilename The name of the properties file. Can be * null. */public MultipleHosts(String propertiesFilename){    util = new Util(propertiesFilename, this.getClass().getName());}/** *  Initialize the application */public void init(){    host0 = util.getProperty("host0", "hort.westhawk.co.uk");    host1 = util.getProperty("host1", "roke.westhawk.co.uk");    host2 = util.getProperty("host2", "hands.westhawk.co.uk");    host3 = util.getProperty("host3", "tolk.westhawk.co.uk");    host4 = util.getProperty("host4", "ully.westhawk.co.uk");    try    {        jbInit();    }    catch (Exception e)    {        e.printStackTrace();    }}/** *  Start the application */public void start(){    initContexts();    startPolling();    setArrays();    tock.setRepeats(true);    tock.start();}/** *  Stop the application */public void stop(){    destroyContexts();    tock.stop();}public void actionPerformed(ActionEvent e){    for (int i = 0; i < contexts.length; i++)    {        hostC[i].setText("" + counts[i]);        hostV[i].setText(this.vals[i]);        hostL[i].setText(contexts[i].getHost());    }    speedL.setText(calcSpeed());    this.repaint();}/** * Get the data from the PDU's * *@param  o    Description of Parameter *@param  arg  Description of Parameter */public void update(Observable o, Object arg){    SysUpTime p = (SysUpTime) o;    String text = "error";    if (arg instanceof Exception)    {        // got an error        text = ((Exception) arg).getMessage();    }    else if (arg instanceof Long)    {        // got a value        text = arg.toString();    }    SnmpContextBasisFace c = p.getContext();    // find the context number    for (int i = 0; i < contexts.length; i++)    {        if ((contexts[i] == c) && (c != null))        {            // found it            counts[i]++;            //update the gui            vals[i] = text;            // request another            doPoll(c);            break;        }    }}/** *  Sets the arrays attribute of the MultipleHosts object */void setArrays(){    hostL[0] = hostL0;    hostL[1] = hostL1;    hostL[2] = hostL2;    hostL[3] = hostL3;    hostL[4] = hostL4;    hostC[0] = hostC0;    hostC[1] = hostC1;    hostC[2] = hostC2;    hostC[3] = hostC3;    hostC[4] = hostC4;    hostV[0] = hostV0;    hostV[1] = hostV1;    hostV[2] = hostV2;    hostV[3] = hostV3;    hostV[4] = hostV4;}void initContexts(){    try    {        int port = SnmpContextBasisFace.DEFAULT_PORT;        contexts[0] = new SnmpContext(host0, port);        contexts[1] = new SnmpContext(host1, port);        contexts[2] = new SnmpContext(host2, port);        contexts[3] = new SnmpContext(host3, port);        contexts[4] = new SnmpContext(host4, port);    }    catch (Exception x)    {        this.errLine.setText(x.getMessage());        x.printStackTrace();    }}void destroyContexts(){    for (int i = 0; i < contexts.length; i++)    {        if (contexts[i] != null)        {            contexts[i].destroy();        }    }}void startPolling(){    for (int i = 0; i < contexts.length; i++)    {        if (contexts[i] != null)        {            doPoll(contexts[i]);        }    }}String calcSpeed(){    String ret = "";    long count = 0;    Date now = new Date();    for (int i = 0; i < counts.length; i++)    {        count += counts[i];    }    if (then != null)    {        long tdiff = now.getTime() - then.getTime();        long cdiff = (count - ocount);        long rate = cdiff * 1000 / tdiff;        ret = "" + rate + " pdus/sec";    }    then = now;    ocount = count;    return ret;}void doPoll(SnmpContextBasisFace co){    try    {        SysUpTime up = new SysUpTime(co, UpSincePdu.SYSUPTIME, this);    }    catch (Exception x)    {        this.errLine.setText(x.getMessage());        x.printStackTrace();    }}/** * Component initialization * *@exception  Exception  Description of Exception */private void jbInit()    throws Exception{    host4panel.setLayout(gridLayout2);    hostV4.setHorizontalAlignment(SwingConstants.RIGHT);    hostV4.setText("value4");    hostC4.setHorizontalAlignment(SwingConstants.RIGHT);    hostC4.setText("count4");    hostL4.setHorizontalAlignment(SwingConstants.LEFT);    hostL4.setText("host4");    host3panel.setLayout(gridLayout3);    hostC3.setHorizontalAlignment(SwingConstants.RIGHT);    hostC3.setText("count3");    hostL3.setHorizontalAlignment(SwingConstants.LEFT);    hostL3.setText("host3");    hostV3.setHorizontalAlignment(SwingConstants.RIGHT);    hostV3.setText("value3");    jLabel4.setText("3");    host2panel.setLayout(gridLayout4);    hostC2.setHorizontalAlignment(SwingConstants.RIGHT);    hostC2.setText("count2");    hostL2.setHorizontalAlignment(SwingConstants.LEFT);    hostL2.setText("host2");    hostV2.setHorizontalAlignment(SwingConstants.RIGHT);    hostV2.setText("value2");    jLabel5.setText("2");    host1panel.setLayout(gridLayout5);    hostC1.setHorizontalAlignment(SwingConstants.RIGHT);    hostC1.setText("count1");    hostL1.setHorizontalAlignment(SwingConstants.LEFT);    hostL1.setText("host1");    hostV1.setHorizontalAlignment(SwingConstants.RIGHT);    hostV1.setText("value1");    jLabel6.setText("1");    host0panel.setLayout(gridLayout6);    hostC0.setHorizontalAlignment(SwingConstants.RIGHT);    hostC0.setText("count0");    hostL0.setHorizontalAlignment(SwingConstants.LEFT);    hostL0.setText("host0");    hostV0.setHorizontalAlignment(SwingConstants.RIGHT);    hostV0.setText("value0");    jLabel7.setText("0");    hostPanel.setLayout(gridLayout1);    gridLayout1.setRows(6);    gridLayout6.setColumns(4);    gridLayout5.setColumns(4);    gridLayout4.setColumns(4);    gridLayout3.setColumns(4);    gridLayout2.setColumns(4);    jLabel10.setText("4");    errLine.setHorizontalAlignment(SwingConstants.CENTER);    errLine.setText("OK");    jLabel1.setHorizontalAlignment(SwingConstants.LEFT);    jLabel1.setText("Multiple query sample application");    topPanel.setLayout(borderLayout2);    speedL.setHorizontalAlignment(SwingConstants.CENTER);    speedL.setText("speed");    headerPanel.setLayout(gridLayout7);    gridLayout7.setColumns(4);    jLabel2.setText(" ");    jLabel3.setHorizontalAlignment(SwingConstants.RIGHT);    jLabel3.setText("#Requests");    jLabel9.setHorizontalAlignment(SwingConstants.RIGHT);    jLabel9.setText("Uptime");    jLabel8.setText("Host");    headerPanel.add(jLabel2, null);    headerPanel.add(jLabel8, null);    headerPanel.add(jLabel3, null);    headerPanel.add(jLabel9, null);    host0panel.add(jLabel7, null);    host0panel.add(hostL0, null);    host0panel.add(hostC0, null);    host0panel.add(hostV0, null);    host1panel.add(jLabel6, null);    host1panel.add(hostL1, null);    host1panel.add(hostC1, null);    host1panel.add(hostV1, null);    host2panel.add(jLabel5, null);    host2panel.add(hostL2, null);    host2panel.add(hostC2, null);    host2panel.add(hostV2, null);    host3panel.add(jLabel4, null);    host3panel.add(hostL3, null);    host3panel.add(hostC3, null);    host3panel.add(hostV3, null);    host4panel.add(jLabel10, null);    host4panel.add(hostL4, null);    host4panel.add(hostC4, null);    host4panel.add(hostV4, null);    this.setLayout(borderLayout3);    this.add(topPanel, BorderLayout.NORTH);    this.add(hostPanel, BorderLayout.CENTER);    this.add(errLine, BorderLayout.SOUTH);    topPanel.add(jLabel1, BorderLayout.WEST);    topPanel.add(speedL, BorderLayout.CENTER);    hostPanel.add(headerPanel, null);    hostPanel.add(host0panel, null);    hostPanel.add(host1panel, null);    hostPanel.add(host2panel, null);    hostPanel.add(host3panel, null);    hostPanel.add(host4panel, null);}/** * Simple PDU class that implements getting sysUptime * * @author <a href="mailto:thp@westhawk.co.uk">Tim Panton</a> */class SysUpTime extends Pdu{    Long value;    /**     *  Constructor for the SysUpTime object     *     *@param  con                      Description of Parameter     *@param  oid                      Description of Parameter     *@param  o                        Description of Parameter     *@exception  PduException         Description of Exception     *@exception  java.io.IOException  Description of Exception     */    public SysUpTime(SnmpContextBasisFace con, String oid, Observer o)        throws PduException, java.io.IOException    {        super(con);        if (o != null)        {            addObserver(o);        }        addOid(oid);        send();    }    protected void new_value(int n, varbind res)    {        AsnObject val = res.getValue();        if (val instanceof AsnUnsInteger)        {            AsnUnsInteger va = (AsnUnsInteger) val;            if (n == 0)            {                value = new Long(va.getValue());            }        }        else        {            value = null;        }    }    protected void tell_them()    {        notifyObservers(value);    }}/** *  Main method * *@param  args  The command line arguments */public static void main(String[] args){    try    {        //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());        UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());    }    catch (Exception e)    {    }    String propFileName = null;    if (args.length > 0)    {        propFileName = args[0];    }    MultipleHosts application = new MultipleHosts(propFileName);    application.init();    JFrame frame = new JFrame();    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    frame.setTitle(application.getClass().getName());    frame.getContentPane().setLayout(new BorderLayout());    frame.getContentPane().add(application, BorderLayout.CENTER);    frame.setSize(800, 320);    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();    frame.setLocation((d.width - frame.getSize().width) / 2,                      (d.height - frame.getSize().height) / 2);    frame.setVisible(true);    application.start();}}

⌨️ 快捷键说明

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