Hallo zusammen!!!
Ich mache grad meine ersten Schritte was die Netzwerkprogrammierung mit Java angeht und da dachte ich mir, wäre so ein Chat Applet wohl das richtige. Jaja Chat-Applet ich weiß, aber so als Einstieg find ich es gar nicht schlecht.
Nun hatte ich in den FAQ's nen Link gefunden um einen Chat selber zu schreiben. Gesagt getan. Nur leider tritt bei mir ein Fehler auf. Der Zugriff wird verweigert und ich weiß nicht warum. Hab an den Server und connection Klassen nix verändert. Hoffe ihr könnt mir helfen, hier mal der Quellcode:
und hier die Fehlermeldung:
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 Main.start(Main.java:46)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Weiß jemand Rat? Schon mal Danke im Voraus!!
Gruß Paule!!
Ich mache grad meine ersten Schritte was die Netzwerkprogrammierung mit Java angeht und da dachte ich mir, wäre so ein Chat Applet wohl das richtige. Jaja Chat-Applet ich weiß, aber so als Einstieg find ich es gar nicht schlecht.
Nun hatte ich in den FAQ's nen Link gefunden um einen Chat selber zu schreiben. Gesagt getan. Nur leider tritt bei mir ein Fehler auf. Der Zugriff wird verweigert und ich weiß nicht warum. Hab an den Server und connection Klassen nix verändert. Hoffe ihr könnt mir helfen, hier mal der Quellcode:
Code:
public class Main extends JApplet implements Runnable {
JPanel activeView;
public static final int PORT = 8765;
Socket socket;
DataInputStream in;
PrintStream out;
Thread thread;
public void init() {
activeView = new GetNick(this); //Klasse zum erhalten eines Nicknames (JPanel)
getContentPane().add(activeView);
}//init
public void start(){
try {
socket = new Socket(this.getCodeBase().getHost(), PORT);
in = new DataInputStream(socket.getInputStream());
out = new PrintStream(socket.getOutputStream());
} catch (IOException e){
this.showStatus(e.toString());
//say("Verbindung zum Server fehlgeschlagen!");
System.exit(1);
}
//say("Verbindung zum Server aufgenommen...");
if (thread == null){
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}
}//start
public void stop(){
try {
socket.close();
} catch (IOException e) {
this.showStatus(e.toString());
}
if ((thread !=null) && thread.isAlive()) {
thread.stop();
thread = null;
}
}//stop
public void run() {
String line;
try {
while(true) {
line = in.readLine();
if(line!=null){
GregorianCalendar day = new GregorianCalendar();
String hour = new String(String.valueOf(day.get(Calendar.HOUR_OF_DAY)));
String minute = new String(String.valueOf(day.get(Calendar.MINUTE)));
String second = new String(String.valueOf(day.get(Calendar.SECOND)));
ChatPanel.chatArea.append('\n'+"<"+hour+":"+minute+":"+second+">"+" "+ChatPanel.nick+": "+line);
ChatPanel.chatArea.setCaretPosition(ChatPanel.chatArea.getText().length()); //letzte Zeile der TextArea anzeigen
ChatPanel.tinput.setText("");
ChatPanel.tinput.requestFocus();
}//if (line != null)
}//while
} catch (IOException e) {
//say("Verbindung zum Server abgebrochen");
}
}//run
public boolean action(Event e, Object what)
{
if ((e.target==ChatPanel.sendinput) || (e.target==ChatPanel.tinput))
{
String inp=(String) e.arg;
if (!inp.equals("")) {
out.println(inp);
}
else {
JOptionPane.showMessageDialog(null, "Leerer Eingabetext!!", "Fehler bei der Eingabe", JOptionPane.WARNING_MESSAGE);
ChatPanel.tinput.requestFocus();
}
return true;
}
return false;
}//action
public void say(String msg)
{
ChatPanel.chatArea.append("*** "+msg+" ***\n");
}
public void changeView(JPanel p) {
remove(activeView);
activeView = p;
getContentPane().add(activeView);
validate();
}//activeView
}//Klasse
und hier die Fehlermeldung:
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 Main.start(Main.java:46)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Weiß jemand Rat? Schon mal Danke im Voraus!!
Gruß Paule!!