Avatar billede ibrene Nybegynder
28. juli 2002 - 20:18 Der er 10 kommentarer og
1 løsning

Kan ikke lave socket connect via applet

Hejsa

Jeg har fået lavet mig en Chat som køre fint, hvis jeg logger på med en telnet client. Men nu ville jeg jo gerne havde den til at virker også med at køre som en applet.

Men det er lige som om at den ikke vil connect og bare springer min main function over. Kan nogle hjælpe mig??


import java.io.*;
import java.net.*;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.*;

public class PrintThread extends Applet {

    TextArea display = new java.awt.TextArea(7, 90);
    TextField textField = new TextField("", 90);
    int paintCount = 0;

   
    public void init() {
        display.setEditable(false);
        textField.setEditable(true);
   
        GridBagLayout gridBag = new GridBagLayout();
        setLayout(gridBag);
        GridBagConstraints c = new GridBagConstraints();
        c.gridwidth = GridBagConstraints.REMAINDER;
       
        c.fill = GridBagConstraints.BOTH;
        c.weightx = 1.0;
        c.weighty = 1.0;
        gridBag.setConstraints(display, c);
        add(display);

        c.fill = GridBagConstraints.BOTH;
        c.weightx = 1.0;
        c.weighty = 0.0;
        gridBag.setConstraints(textField, c);
        add(textField);
        validate();
        addItem("Velkommen... ");
    }

    public boolean action(Event evt, Object arg) {
        String text;
        text = textField.getText();
        display.appendText(text + " \n");
        textField.setText("");
//        textField.selectAll();
//        Connect();
        return true;
    }

    void addItem(String newWord) {
        System.out.println(newWord);
        display.appendText(newWord + "\n");
        display.repaint();
        if (++paintCount % 4 == 0) {
            repaint();
        }
    }

    public void main(String[] args) throws IOException {
        Socket echoSocket = null;
        PrintWriter out = null;
        BufferedReader in = null;
        try {
            echoSocket = new Socket("*.*.*.*", 1997);
            out = new PrintWriter(echoSocket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
        } catch (UnknownHostException e) {
//            System.err.println("Don't know about host: *.*.*.*.");
            addItem("Don't know about host: *.*.*.*.");
            System.exit(1);
        } catch (IOException e) {
//            System.err.println("Couldn't get I/O for the connection to: *.*.*.*.");
            addItem("Couldn't get I/O for the connection to: *.*.*.*.");
            System.exit(1);
        }
    BufferedReader stdIn = new BufferedReader( new InputStreamReader(System.in));
    String userInput;
        out.println("ibrene");
        out.println("password");
    while ((userInput = stdIn.readLine()) != null) {
        out.println(userInput);
//        System.out.println("echo: " + in.readLine());
    }
    addItem("Fake Don't know about host: *.*.*.*.");
    out.close();
    in.close();
    stdIn.close();
    echoSocket.close();
    }   
}
Avatar billede jakoba Nybegynder
28. juli 2002 - 20:27 #1
der er ingen main() metode i en applet. Læg initiering og opstart i din init() metode

mvh JakobA
Avatar billede ibrene Nybegynder
28. juli 2002 - 20:31 #3
Hejsa

Har du mulighed for at ændre koden og poste den, for jeg er altså ikke lige sikker på hvad du mener.

Skal jeg ligge min connect kald op ind under init() ??
Avatar billede jakoba Nybegynder
28. juli 2002 - 20:37 #4
du kan evt lave et kald til main() tilsidst i din init() metode.
        addItem("Velkommen... ");
        main();
    }

men jeg har ikke meget forstand på sockets, så det er mere gæt end forstand :(
Jeg tror det er mere kompliceret end som det.
Avatar billede ibrene Nybegynder
28. juli 2002 - 20:38 #5
Så kommer følgende fejl:

[root@dev java]# javac -target 1.1 PrintThread.java
PrintThread.java:36: main(java.lang.String[]) in PrintThread cannot be applied to ()
                main();
                ^
Note: PrintThread.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.
1 error
Avatar billede jakoba Nybegynder
28. juli 2002 - 20:46 #6
Ups. ja parametrene skal jo matche.

du bruger ikke mains parameter nogen steder vel?  så:
    public void main() throws IOException {

den der IOException skal nok også catches
Avatar billede ibrene Nybegynder
28. juli 2002 - 20:48 #7
hmm... og hvordan gør jeg det?
Avatar billede ibrene Nybegynder
28. juli 2002 - 20:50 #8
Jeg mener, hvordna catches IOException
Avatar billede jakoba Nybegynder
28. juli 2002 - 20:57 #9
Jeg tror det bedste er at du
1) afviser mit svar
2) kontakter ham der har skrevet telnet klienten til dig og får ham til at omskrive den til en applet.

mvh JakobA
Avatar billede ibrene Nybegynder
28. juli 2002 - 23:01 #10
fandt selv en løsning
Avatar billede ormurin Nybegynder
06. januar 2003 - 16:50 #11
en løsning? hvordan lavede du det?. (jeg sidder nu med samme problem)
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