# Chat Programm - was ist los?



## Gast melde mich später an (12. Nov 2004)

Hallo!

Ich habe ein Chat-proggi geschrieben, welches ich nach einem tutorial gemacht habe! Doch leider will das nicht so ganz!

Hier mal der Code:


```
import java.net.*;
import java.io.*;
import java.awt.*;
import java.applet.*;

public class Chatman extends Applet implements Runnable
{
	public static final int PORT = 8765;
	Socket socket;
	DataInputStream in;
	PrintStream out;
	TextField inputfield;
	TextArea outputarea;
	Thread thread;

	public void init()
	{
		inputfield = new TextField();
		outputarea = new TextArea();
		outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
		outputarea.setEditable(false);

		this.setLayout(new BorderLayout());
		this.add("South", inputfield);
		this.add("Center", outputarea);

		this.setBackground(Color.lightGray);
		this.setForeground(Color.black);
		inputfield.setBackground(Color.white);
		outputarea.setBackground(Color.white);
	}

	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(0);
		}

		say("Verbindung zum Server aufgenommen...");

		if (thread == null)
		{
			thread = new Thread(this);
			thread.setPriority(Thread.MIN_PRIORITY);
			thread.start();
		}
	}


	public void stop()
	{
		try
		{
			socket.close();
		} catch (IOException e)
		{
			this.showStatus(e.toString());
		}

		if ((thread !=null) && thread.isAlive())
		{
			thread.stop();
			thread = null;
		}
	}


	public void run()
	{
		String line;

		try
		{
			while(true)
			{
				line = in.readLine();
				if(line!=null)
				{
					outputarea.appendText(line+'\n' );	
				}
				
			}
		} 
		catch (IOException e) 
		{ 
		  say("Verbindung zum Server abgebrochen"); 
		}
	}


	public boolean action(Event e, Object what)
	{
		if (e.target==inputfield)
		{
			String inp=(String)e.arg;

			out.println(inp);
			inputfield.setText("");
			return true;
		}

		return false;
	}


	public void say(String msg)
	{
		outputarea.appendText("*** "+msg+" ***\n");
	}
}
```

DER SERVER


```
import java.net.*;
import java.io.*;
import java.util.*;

public class chatmanserver implements Runnable
{
	public static final int PORT = 8765;
	protected ServerSocket listen;
	protected Vector connections;
	Thread connect;

	public chatmanserver()
	{
		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();
	}

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

				chatmanconnection c = new chatmanconnection(this, client);
				connections.addElement(c);
			}
		} catch (IOException e)
		{
			System.err.println("Fehler beim Warten auf Verbindungen:"+e);
			System.exit(1);
		}
	}

	public static void main(String[] args)
	{
		new chatmanserver();
	}

	public void broadcast(String msg)
	{
		int i;
		chatmanconnection you;

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

DER CLIENT


```
import java.net.*;
import java.io.*;

class chatmanconnection extends Thread
{
	protected Socket client;
	protected DataInputStream in;
	protected PrintStream out;
	protected chatmanserver server;

	public chatmanconnection(chatmanserver server, Socket client)
	{
		this.server=server;
		this.client=client;

		try
		{
			in = new DataInputStream(client.getInputStream());
			out = new PrintStream(client.getOutputStream());
		} catch (IOException e)
		{
			try { client.close(); } catch (IOException e2) {} ;
			System.err.println("Fehler beim Erzeugen der Streams: " + e);
			return;
		}

		this.start();
	}


	public void run()
	{
		String line;

		try
		{
			while(true)
			{
				line=in.readLine();
				if(line!=null)
					server.broadcast(line);
			}
		} catch (IOException e)
		{
			System.out.println("Fehler:" + e);
		}
	}
}
```


THX im Vorraus!


----------



## Roar (12. Nov 2004)

Gast melde mich später an hat gesagt.:
			
		

> Ich habe ein Chat-proggi geschrieben, welches ich nach einem tutorial gemacht habe! Doch leider will das nicht so ganz!



und wir sollen jetzt raten was der fehler ist? 
http://www.java-forum.org/de/viewtopic.php?t=8116


----------



## Heiland (12. Nov 2004)

Also wenn ichs kompiliere,

dann kann ich zwar nen text reinschreiben und verbinden tut er auch zum server aber beim enter drücken passiert nichts!


----------



## foobar (12. Nov 2004)

Lass dir doch mal ein paar Meldungen per System.out.prinln ausgeben, damit du siehst an welcher Stelle er hängen bleibt.


----------



## Heiland (12. Nov 2004)

Bei der Chatman Klasse in Zeile 84 schon beim Start: NullPointerException!

Das heisst doch das ein Zeiger ins Nichts zeigt oder? Aber was sagt mir das! Was muss ich ändern?


----------



## SebiB90 (13. Nov 2004)

Gast melde mich später an hat gesagt.:
			
		

> Hallo!
> 
> Ich habe ein Chat-proggi geschrieben, welches ich nach einem tutorial gemacht habe! Doch leider will das nicht so ganz!


ein inernet tutorial?
wenn ja gib mal link


----------



## Heiland (13. Nov 2004)

hi hab ich selber über ne Forumssuche gefunden: http://java.seite.net/chat/

ich hab das Problem immer noch nicht gelöst!

JaVa


----------



## Kollos Gast (9. Dez 2004)

Habe den Chat so wie du ihn gepostest hast mal getestet. Der funktioniert wunderbar.

Habe keine Probleme beim Test gehabt.


----------



## meez (10. Dez 2004)

Vielleicht hilft dir das?
http://www.java-forum.org/de/viewtopic.php?t=6033


----------



## Poldy (19. Jan 2005)

Hallo,

hab mich an dem gleichen Tutorial versucht, bekomme den Chat lokal auf meinem Rechner zum laufen, aber auf dem Server funktioniert es nicht. 

Wie muss ich vorgehen? Könnte es am Server liegen und eventuellen Sicherheitseinstellungen? Gibt es kostenfreie Serveralternativen?

Habe alle Dateien in einem Verzeichnis abgelegt, genauso wie auf meinem Rechner. Starte chatserver.class (in dem bsp. wäre es chatmanserver.class) direkt auf dem Server und dann die HTML-Datei in der das Chatapplet eingebettet ist. Nach einigen Sekunden "applet loaded" erscheint "applet chrashed".


----------

