# Acces denied bei Chat



## Paule (24. Mai 2005)

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:


```
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!!


----------



## Wildcard (24. Mai 2005)

Applets unterliegen einigen Sicherheitsbeschränkungen. Ihnen ist es unter anderem untersagt die VM zu beenden, weshalb du System.exit nicht verwenden kannst.


----------



## Paule (24. Mai 2005)

Hi,

schon mal danke, jetzt startet die ganze Sache wenigstens. Nun aber gleich das nächste Problem: Meine Eingaben werden nicht im Ausgabebereich angezeigt. Es erscheint auch ein Fehler, nämlich genau dieser:

Exception in thread "Thread-5" java.lang.NullPointerException
	at Main.run(Main.java:75)
	at java.lang.Thread.run(Unknown Source)

In Zeile 75 steht folgendes:

```
line = in.readLine();
```
Könnte der dafür verantwortlich sein, das meine Eingaben nicht angezeigt werden? Ich tippe mal ganz stark auf ein JA 
Denn so wie es für mich aussieht, wird der InputStream falsch erkannt, und somit können ja auch keine Daten gesendet werden.
Was muss ich machen, damit die NullPointerException nicht mehr auftritt?

Gruß Paule!!


----------



## Wildcard (24. Mai 2005)

Du landest vermutlich im catch-Block und deshalb ist 'in' null. Lass dir im catch-Block mal den Stack-Trace ausgeben und schau woran's liegt.


----------



## Paule (24. Mai 2005)

Hallo,

man ich schnall heute wohl nix mehr 
OK, hab mir jetzt die Exception ausgeben lassen (das war es doch was du meintest oder?) und dabei kam nun folgender Text:

java.net.ConnectException: Connection refused: connect

Was sagt mir das nun? Die Verbindung wurde nicht hergestellt, aber warum denn nicht?!


----------



## Paule (24. Mai 2005)

Hi, ich nochmal!!!

Ich seh schon mit dem Tutorial, von dem ich diesen Chat habe, kann ich wohl nicht viel anfangen. Kennt ihr zufällig Links unter denen ich ein funktionsfähiges, simples Chat Applet bekomme?
Aber bitte nicht diesen Chat zum selber machen, denn genau dieser funzt bei mir ja nicht.
Wie ist das eigentlich, wenn ich auf ner Homepage einen Chat integrieren möchte. Muss ich da bei der Server Programmierung was spezielles beachten?

Schon mal Danke im Voraus!

Gruß Paule!!!


----------



## Paule (25. Mai 2005)

Moin moin,

so vergesst alles was ich vorher geschrieben hatte. Hab den Chat nun endlich zum Laufen gebracht. Problem war, dass ich den ChatServer nicht gestartet hatte, und denn wirds ja schwierig ne Verbindung aufzubauen 

Da ergibt sich nun aber eine Frage für mich: Jetzt wo der Chat läuft wollte ich diesen mal auf meine Homepage packen. Aber denn müsste der ChatServer ja Tag und Nacht auf meinem Webspace laufen. Oder?
Wie macht ihr sowas? Habt ihr auch ständig nen Server auf eurem Webspace laufen oder wie habt ihr den Chat organisiert?
Wäre nett, wenn ihr mir ein paar Tipps geben könntet.

Gruß Paule!!!

ps: hier mal der Code für meinen ChatServer:


```
public class ChatServer implements Runnable {

	public static final int PORT = 8765;
	protected ServerSocket listen;
	protected Vector connections;
	Thread connect;

	public ChatServer()
	{
		try
		{
			listen = new ServerSocket(PORT);
		} catch (IOException e)
		{
			System.err.println("Fehler beim Erzeugen der Sockets:"+e);
			System.exit(1);
		}

		connections = new Vector();

		connect = new Thread(this);
		connect.start();
	}//Konstruktor

	public void run()
	{
		try
		{
			while(true)
			{
				Socket client=listen.accept();

				Connection c = new Connection(this, client);
				connections.addElement(c);
			}
		} catch (IOException e)
		{
			System.err.println("Fehler beim Warten auf Verbindungen:"+e);
			System.exit(1);
		}
	}//run
	
	public static void main(String[] args) {
		new ChatServer();
	}//main
	
	public void broadcast(String msg)
	{
		int i;
		Connection you;

		for (i=0; i<connections.size(); i++)
		{
			you = (Connection) connections.elementAt(i);
			you.out.println(msg);
		}
	}
}//Klasse
```


----------

