Java ChatApplet im lokalen netzwerk. kleines problemchen ^

  • Themenstarter Themenstarter Galabriel
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Galabriel

Gast
Ich wünsche einen schönen tag... ich habe einen lokalen ( intranet ) chat programmiert... leider gibts probleme... Er läuft nur lokal, keine ahnung wieso. Der Chat besteht aus 3 Dateien... den Server ( Chat-Server ) den connection ( verwaltet die verbindungen ) und das applet selber.... das applet wurde in eine html datei eingebunden... ich habe den ordner in ein öffentlichen ordner im netzwerk freigeschalten..... der server wurde gestartet, lokal kann ich mich damit verbinden... aber andere leute die auf den ordner zugreifen erhalten keine verbindung... leider weiß ich nicht wieso...

ich poste euch hier die quellcode

==============================
CHATSERVER
==============================




Code:
import java.net.*;

import java.io.*;

import java.util.*;



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

	}



	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);

		}

	}



	public static void main(String[] args)

	{

		new chatserver();

	}



	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);

		}

	}

}


====================================
Connection
====================================

Code:
import java.net.*;

import java.io.*;



class connection extends Thread

{

	protected Socket client;

	protected DataInputStream in;

	protected PrintStream out;

	protected chatserver server;



	public connection(chatserver 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);

		}

	}

}





============================================
APPLET
============================================

Code:
import java.net.*;

import java.io.*;

import java.awt.*;

import java.applet.*;



public class chatapplet extends Applet implements Runnable

{

	public static final int PORT = 8765;

	Socket socket;

	DataInputStream in;

	PrintStream out;

	TextField inputfield;

	TextField nickname;

	TextArea outputarea;

	Thread thread;



	public void init()

	{

		inputfield = new TextField();

		outputarea = new TextArea();

		outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));

		outputarea.setEditable(false);

		nickname = new TextField("Nick hier eingeben");





		this.setLayout(new BorderLayout());

		this.add("South", inputfield);

		this.add("Center", outputarea);

		this.add("North", nickname);

		

		this.setBackground(Color.lightGray);

		this.setForeground(Color.black);

		inputfield.setBackground(Color.red);

		outputarea.setBackground(Color.white);

		nickname.setBackground(Color.red);

	}



	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 CHAT-Server fehlgeschlagen.... Connection not established.");

			System.exit(1);

		}



		say("\nVerbindung zum Chat-Server erfolgreich aufgebaut..... Connection established!!\nAutor: Gabriel Raffin\nVersion: 0.9 Alpha Release 2005\nCopyright: (c)2005 Galabriel, alle Rechte vorbehalten\n");



		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 beendet / abgebrochen... Connection down"); }

	}





	public boolean action(Event e, Object what)

	{

		if (e.target==inputfield)

		{

			String inp=(String) e.arg;



			out.println(inp);

			inputfield.setText(nickname.getText());

			return true;

		}



		return false;

	}





	public void say(String msg)

	{

		outputarea.appendText("*********************************** "+msg+" ***********************************\n");

	}

}


bitte helft mir

mfg.
gabriel
 
Moin,

was heißt denn

ich habe den ordner in ein öffentlichen ordner im netzwerk freigeschalten

?

Hast du keinen Web-Server, wo auch der Chat-Server läuft und wohin sich die Clients verbinden ? Woher soll denn das Applet auf den Clients wissen, wo der Chat-Server läuft ? Also entweder du packst das ganze in einen Web-Server oder du legst per Konfiguration fest, wo dein Chat-Server läuft.

Gruß
Mag1c
 
sorry ^^ der ordner liegt im netzwerk ( netzwerk von mehrern computern - lan ) .... ich habe einmal der html datei nen vollen pfad zum applet.class gegeben, trotztem läuft es nicht, da es keine verbindung zum server erhaelt... aber wieso!!!!


es muss do^h sein dass der chat übers lan läuft
 
Hi,

ich habe diese Frage bereits beantwortet. Wenn du nicht verstehst, was ich meine, dann lass dir mal das Ergebnis von this.getCodeBase().getHost() per System.out auf der Java-Console des Browsers ausgeben.

Gruß
Mag1c
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben