我用udp来获取trap信息,有如下的异常出现.
java.security.AccessControlException: access denied (java.net.SocketPermission localhost:162 listen,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkListen(Unknown Source)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at uk.co.westhawk.snmp.net.StandardSocket.create(StandardSocket.java:59)
at uk.co.westhawk.snmp.stack.DefaultTrapContext.<init>(DefaultTrapContext.java:136)
at uk.co.westhawk.snmp.stack.DefaultTrapContext.<init>(DefaultTrapContext.java:108)
at uk.co.westhawk.snmp.stack.DefaultTrapContext.getInstance(DefaultTrapContext.java:150)
at trap.init(trap.java:42)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)该异常当我用java viewer来运行就没有该异常,如果我直接将其下载到机器,就有了上面的异常.可我也已经在java policy内修改了其属性了:
permission java.net.SocketPermission "10.10.70.39:1-5000", "accept,connect,listen, resol为什么还会有上面的错误?
求求各位高手了!

解决方案 »

  1.   

    用socket 可以获得trap报文吗,trap 是用snmp 得到吧
      

  2.   

    import java.awt.*; 
    import javax.swing.*;
    import java.util.*;
    import java.net.*;
    import uk.co.westhawk.snmp.stack.*;
    import uk.co.westhawk.snmp.stack.SnmpContext;
    import uk.co.westhawk.snmp.pdu.*;
    import uk.co.westhawk.snmp.event.*;  
    public class trap extends javax.swing.JApplet implements TrapListener
    {
        
        /** Creates a new instance of trap */
        public trap() {
        }
        SnmpContext context;
        JTextArea area;
        
        public trap(String propertiesFilename)
        {
            
        }
        String ipaddress;
        DefaultTrapContext defTrap;
        public void init()
        {
            Container content=this.getContentPane();
            area=new JTextArea();
            content.add(area);
           ipaddress="10.10.70.39";
            try 
            {
                defTrap =DefaultTrapContext.getInstance(162);
                defTrap.addUnhandledTrapListener(this);
                context=new SnmpContext("",6);
                context.addTrapListener(this);            System.out.println("ReceiveTrap.init(): " 
                    + context.toString());
            }
            catch (java.io.IOException exc)
            {
                System.out.println("ReceiveTrap.init(): IOException " 
                    + exc.getMessage());
                exc.printStackTrace();
                System.exit(0);
            }
        
        }
        
        public void trapReceived(TrapEvent evt)
        {
            if (evt.isDecoded())
            {               
                Pdu trapPdu = evt.getPdu();
                
                SnmpContextBasisFace context = trapPdu.getContext();            
                int version = context.getVersion();
                String host = context.getHost();
                int reqId = trapPdu.getReqId();
                
                //trapPdu.getRequestVarbinds();
               
                //area.append("ReceiveTrap.trapReceived():"
                 //   + " received decoded trap id " + reqId 
                  //  + ", v " + version
                  //  + " from host " + host+"\n");
                System.out.println("ReceiveTrap.trapReceived():"
                    + " received decoded trap id " + reqId 
                    + ", v " + version
                    + " from host " + host);           
                area.append(trapPdu.toString());
                System.out.println(trapPdu.toString());
                
            }
            else
            {
                int version = evt.getVersion();
                String host = evt.getHostAddress();
                System.out.println("ReceiveTrap.trapReceived():"
                    + " received undecoded trap v " + version
                    + " from host " + host);
                
                           
                   try {
                            // make a context which matches the unexpected trap.
                            SnmpContextBasisFace tmpcont = new SnmpContext(host,context.getPort(),context.getTypeSocket());
                            byte[] mess = evt.getMessage();
                            // and get it to decode the thing.
                            Pdu got = tmpcont.processIncomingTrap(mess);
                            System.out.println( "got unexpected trap from "+host+" :"+got.toString());
                            tmpcont.destroy();
                        } 
                   catch (Exception x) {   x.printStackTrace();}
            
                            }
        }
        
        public void update(Observable o, Object arg)
        {
            
            Pdu pdu = (Pdu) o;
            System.out.println("ReceiveTrap.update(): " + pdu.toString());
        }
        
    }我用的第三方的包.import是第三方的包
    我最后将第三方的文件和trap.class一起打包成trap.jar.
    java的policy不管修改还是不修改,我调试程序,用java appletviewer 都可以正确获取trap信息.我也修改了policy文件,但是还是出现上面的问题阿!
    谢谢您了,帮我好好看看,我都弄了好几天了,难为我这小女子了!