Avatar billede jesper-madsen Nybegynder
23. september 2005 - 18:28 Der er 16 kommentarer

Socket i applet melder fejl

Hej, jeg har denne kode:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class z extends Applet implements MouseListener
{

Socket sock = null;
Image figur;
Image offScreen;
Graphics bufferGfx;
Image baggrund;
Point mouseDown = null;
String brugernavn = getParameter("brugernavn");
 

    public void init()
    {
        addMouseListener(this);
        figur = getImage(getCodeBase(),"bil.gif"); // Figur
        baggrund = getImage(getCodeBase(),"room.gif");  // Baggrunden
        offScreen = createImage (this.getWidth(), this.getHeight());
        bufferGfx = offScreen.getGraphics();
   
  try {
      sock = new Socket("minside.dk",80);
    } catch (UnknownHostException a) {
        System.out.println("Svar fra client: Du fik ikke adgang!");
        a.printStackTrace();
        System.exit(1);
    } catch (IOException ioe) {
        System.out.println("Svar fra client: Kunne ikke oprette forbindelse!");
        ioe.printStackTrace();
        System.exit(1);
    }
    try {
        InputStream ind = sock.getInputStream();
        OutputStream ud = sock.getOutputStream();
        ud.write("Du svarede tilbage!".getBytes());
        int MAX_SIZE = 16384;
        byte[] buffer = new byte[MAX_SIZE];
        while (true) {
            int laes = ind.read(buffer,0,MAX_SIZE);
            System.out.println("Client modtog: "+new String(buffer,0,laes));
            if (laes < MAX_SIZE)
            break;
        }
        sock.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
      public void paint(Graphics g)
      {
          bufferGfx.clearRect(0,0,this.getWidth(),this.getHeight());

        bufferGfx.drawImage(baggrund,0,0,this);
        if (mouseDown != null)
            bufferGfx.drawImage(figur, mouseDown.x-40, mouseDown.y-15, this);     
        bufferGfx.drawString(brugernavn,mouseDown.x-40,mouseDown.y-15); 
        g.drawImage(offScreen,0,0,this);
      }   
   
      public void mouseClicked(MouseEvent e)
      {
        mouseDown = new Point((int) e.getX(), (int) e.getY());
        repaint();
      }
     
      public void update (Graphics g)
      {
          paint(g);
      }
 
      public void mousePressed(MouseEvent e)    {}
      public void mouseReleased(MouseEvent e) {}
      public void mouseEntered(MouseEvent e)    {}
      public void mouseExited(MouseEvent e)    {}
}
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 18:29 #1
den udskriver ingen fejl ved compile, men når jeg prøver at vise appleten melder den disse fejl:


java.lang.NullPointerException
    at java.applet.Applet.getParameter(Unknown Source)
    at z.<init>(z.java:19)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-4" java.lang.NullPointerException
    at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
    at sun.plugin.AppletViewer.showAppletException(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.lang.NullPointerException
    at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
    at sun.plugin.AppletViewer.showAppletStatus(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-z.class" java.lang.NullPointerException
    at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
    at sun.plugin.AppletViewer.showAppletException(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


Sådan viser jeg min applet:

<applet code="z.class" name="" width="408" height="374">
<param name="brugernavn" value="anderz">
</applet>

(KØRER DEN SOM .HTML)
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 18:30 #2
Mit spørgsmål er så!
hvor ligger fejlene?
Avatar billede arne_v Ekspert
23. september 2005 - 18:33 #3
umiddelbart ser det OK ud men prøv lige at flyt:

brugernavn = getParameter("brugernavn");

ned i init metoden så erklæringen kun er:

String brugernavn;
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 18:57 #4
Tak, men så siger den noget med sockets.

java.security.AccessControlException: access denied (java.net.SocketPermission siden.dk 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.checkConnect(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName0(Unknown Source)
    at java.net.InetAddress.getAllByName(Unknown Source)
    at java.net.InetAddress.getByName(Unknown Source)
    at java.net.InetSocketAddress.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at z.init(z.java:32)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-z.class" java.lang.NullPointerException
    at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
    at sun.plugin.AppletViewer.showAppletException(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)


og siden.dk er self. min egen side.
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 19:01 #5
Har fundet ud af, det fordi je ikke har adgang til at skrive kommandoer.

men kører den på localhost siger den:
Svar fra client: Kunne ikke oprette forbindelse!
java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at z.init(z.java:32)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM)
    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.checkExit(Unknown Source)
    at java.lang.Runtime.exit(Unknown Source)
    at java.lang.System.exit(Unknown Source)
    at z.init(z.java:40)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-z.class" java.lang.NullPointerException
    at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
    at sun.plugin.AppletViewer.showAppletException(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Avatar billede arne_v Ekspert
23. september 2005 - 19:05 #6
det er skam fremskridt

nu brokker den sig over at du forsøger at connecte til en anden server end den
du har hentet appletten fra
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 19:06 #7
sock = new Socket("localhost",10000);

Sådan ik?
Avatar billede arne_v Ekspert
23. september 2005 - 19:12 #8
hvis appletten hentes fra localhost og der er noget på localhost som lytter på port
10000 så burde det virke
Avatar billede arne_v Ekspert
23. september 2005 - 19:13 #9
men jeg vil gætte på at dit rigtige setup er:
  - web server og socket server app på samme maskine
  - browser på anden maskine
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 19:14 #10
Har fixet, smed port 80 ind som lytter til nettet.
Men derfor skulle den da aligevel udskrive alt andet i appleten?
Avatar billede arne_v Ekspert
23. september 2005 - 19:16 #11
den har vel smidt en exception kørt videre og smidt en ny exception fordi
den manglede socket connection
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 19:17 #12
lavede nogle println sætninger for at se om den udskrev dem inden der skete noget, men den udskrev intet! Hvorfor? -->


import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class z extends Applet implements MouseListener
{

Socket sock = null;
Image figur;
Image offScreen;
Graphics bufferGfx;
Image baggrund;
Point mouseDown = null;
String brugernavn;
 

    public void init()
    {
        System.out.println("Her skulle den uskrive init!");
        brugernavn = getParameter("brugernavn");
        addMouseListener(this);
        figur = getImage(getCodeBase(),"bil.gif"); // Figur
        baggrund = getImage(getCodeBase(),"room.gif");  // Baggrunden
        offScreen = createImage (this.getWidth(), this.getHeight());
        bufferGfx = offScreen.getGraphics();
   
  try {
      System.out.println("Her  connecter den");
      sock = new Socket("localhost",80);
    } catch (UnknownHostException a) {
        System.out.println("Svar fra client: Du fik ikke adgang!");
        a.printStackTrace();
        System.exit(1);
    } catch (IOException ioe) {
        System.out.println("Svar fra client: Kunne ikke oprette forbindelse!");
        ioe.printStackTrace();
        System.exit(1);
    }
    try {
        InputStream ind = sock.getInputStream();
        OutputStream ud = sock.getOutputStream();
        System.out.println("Her skulle den svarer tilbage");
        ud.write("Du svarede tilbage!".getBytes());
        int MAX_SIZE = 16384;
        byte[] buffer = new byte[MAX_SIZE];
        System.out.println("Her skulle den vise hvad den fik");
        while (true) {
            int laes = ind.read(buffer,0,MAX_SIZE);
            System.out.println("Client modtog: "+new String(buffer,0,laes));
            if (laes < MAX_SIZE)
            break;
        }
        sock.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
      public void paint(Graphics g)
      {
          bufferGfx.clearRect(0,0,this.getWidth(),this.getHeight());

        bufferGfx.drawImage(baggrund,0,0,this);
        if (mouseDown != null)
            bufferGfx.drawImage(figur, mouseDown.x-40, mouseDown.y-15, this);     
        bufferGfx.drawString(brugernavn,mouseDown.x-40,mouseDown.y-15); 
        g.drawImage(offScreen,0,0,this);
      }   
   
      public void mouseClicked(MouseEvent e)
      {
        mouseDown = new Point((int) e.getX(), (int) e.getY());
        repaint();
      }
     
      public void update (Graphics g)
      {
          paint(g);
      }
 
      public void mousePressed(MouseEvent e)    {}
      public void mouseReleased(MouseEvent e) {}
      public void mouseEntered(MouseEvent e)    {}
      public void mouseExited(MouseEvent e)    {}
}
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 20:09 #13
Hallo?
Avatar billede arne_v Ekspert
23. september 2005 - 20:18 #14
hvordan ser HTML siden ud ?

bliver applet hentet ? (kan ses i access loggen)

er der fejl i Java Console ?
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 20:37 #15
Den udskriver intet i java consollen, og den loader ikke rigtigt appleten færdigt (loaderen står midtvejs)

og nederst i status-vinduet siger den "Loading java applet!"
Avatar billede jesper-madsen Nybegynder
23. september 2005 - 23:00 #16
hallo kan du forstå det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester