Problem bei Sockets/InputStream über externe Klasse

Status
Nicht offen für weitere Antworten.

Einwegdose

Aktives Mitglied
HI!

Ich hab ein kleines Problem, was ich beim besten Willen nicht verstehe.
Es geht einfach darum, zu einem Server zu connecten und das auszuspucken, was er beim connecten meldet. Dabei geht es jetzt garnicht um das Protokoll !


Hier nun die Beispielklasse, wo es funktioniert:

Code:
import java.net.*;
import java.io.*;

public class Connection {

 public static void main(String args[]) {
  String text = "";
  try {
   Socket soc = new Socket("irc.quakenet.org",6667);
   BufferedReader br = new BufferedReader(new InputStreamReader(soc.getInputStream()));
   text = br.readLine();
  } catch(Exception e) {}
  System.out.println("Empfangen: " + text);
 }

}

Ich bekomme ein

Empfangen: NOTICE AUTH :*** Looking up your hostname

zurück.


Nun etwas abgewandelt. Der Code der Connection.java verändert:

Code:
import java.net.*;
import java.io.*;

public class Connection {

  public String connecttoserver() {
  String text = "";
  try {
   Socket soc = new Socket("irc.quakenet.org",6667);
   BufferedReader br = new BufferedReader(new InputStreamReader(soc.getInputStream()));
   text = br.readLine();
  } catch(Exception e) {}
  return text;
 }

}

In einer anderen Klasse (JApplet) rufe ich die Methode auf:

Code:
  public void jButton1ActionPerformed(ActionEvent evt) {
    Connection c = new Connection();
    System.out.println("Empfangen: " + c.connecttoserver());
  }

Zurück kommt allerdings nur ein



Ich verstehe es nicht. Weiss einer wieso ?

// Inzwischen bin ich soweit, dass es wohl an dem JApplet liegen muss, da es bei mit nem JFrame funktioniert.
Geht das bei einem JApplet nicht ?
 
Ist wahrscheinlich wegen der Security...Applets sollten eigentlich keine Connections zu "fremden" Servern aufmachen können...
 
Dein Applet muss signiert sein damit es aus der Sandbox ausbrechen kann.
Das hier hat dir übrigens das Genick gebrochen:
Code:
catch(Exception e) {}
Exceptions sollen immer so konkret wie möglich gefangen werden und ein
Code:
catch(BlahBlahException ex)
{
   ex.printStackTrace();
}
ist das absolut mindeste.
 
Hehe ja mit den Exceptions muss ich mich noch mehr befassen 🙂

Aber danke für den Hinweis mit dem Signieren. Werde dann mal etwas googeln und hoffen das ich es hinbekomme !
 
Leider klappt das Signieren nicht 🙁(

Habe jetzt schon mehrere Versuche gemacht, der letzte:

>> keytool -genkey -keyalg rsa -alias test
>> keytool -export -alias test -file "c:\pfad\zur\datei.crt"
>> jarsigner "C:\pfad\zur\datei.jar" test

Danach eine HTML-Datei erstellt:

Code:
<html>
<head>
<title>Applet</title>
</head>
<body>
<h1>Applet</h1>
<hr>
<applet archive="datei.jar" width="650" height="300">
</applet>
<hr>
</body>
</html>

Tja, und da bekomme ich beim Aufruf direkt eine Nullpointer-Exception. Wenn ich allerdings die unsignierte class-Datei als Applet im Browser aufrufe, funktioniert sie (nur eben die Funktionen außerhalb des Sandkastens funktionieren nicht).



EDIT : Hat sich erledigt 😉 Ich wusste nicht, dass der applet-Tag beides enthalten muss :autsch:

Code:
<applet archive="GameSearch.jar" code="GameSearch.class" width="650" height="300">

Jetzt gehts 😀
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben