Prengepower
Mitglied
Hallo!
Ich würde gerne einen Chat in Java bauen. Hab mich schon doll auf google usw. umgesehen aber bin leider nicht so wirklich schlau draus geworden.
Das ganze soll folgendermaßen aufgebaut sein:
Im Programm gibt es die Schaltfläche "hosten" und "verbinden". Wenn der User Hosten betätigt wird ein server im programm gestartet. Die anderen Clients können sich dann nach Eingabe von IP und Port zu dem Server verbinden (Schaltfläche "verbinden")... Im Programm habe ich dann einen Tree wo alle angemeldeten User angezeigt werden. Die Nachrichten sollen dann immer von einem User an alle verschickt werden. Also es findet keine "geschlossene" Kommunikation unter einzelnen Usern statt...
Könntet ihr mir bitte helfen wie ich das umsetzen kann... Weiß nicht so wirklich wie.. Hatte jetzt soweit gedacht, dass der Server beim Hosten in einem Thread gestartet wird. Das habe ich auch hinbekommen, allerdings weiß ich jetzt nicht genau wie ich das mit dem Tree und dem Nachrichtenaustausch anstellen soll...
Hatte das jetzt als klasse server angedacht:
PLZ help
Ich würde gerne einen Chat in Java bauen. Hab mich schon doll auf google usw. umgesehen aber bin leider nicht so wirklich schlau draus geworden.
Das ganze soll folgendermaßen aufgebaut sein:
Im Programm gibt es die Schaltfläche "hosten" und "verbinden". Wenn der User Hosten betätigt wird ein server im programm gestartet. Die anderen Clients können sich dann nach Eingabe von IP und Port zu dem Server verbinden (Schaltfläche "verbinden")... Im Programm habe ich dann einen Tree wo alle angemeldeten User angezeigt werden. Die Nachrichten sollen dann immer von einem User an alle verschickt werden. Also es findet keine "geschlossene" Kommunikation unter einzelnen Usern statt...
Könntet ihr mir bitte helfen wie ich das umsetzen kann... Weiß nicht so wirklich wie.. Hatte jetzt soweit gedacht, dass der Server beim Hosten in einem Thread gestartet wird. Das habe ich auch hinbekommen, allerdings weiß ich jetzt nicht genau wie ich das mit dem Tree und dem Nachrichtenaustausch anstellen soll...
Hatte das jetzt als klasse server angedacht:
Code:
package de.hwrberlin.jemm.net;
import java.net.*;
import java.util.Vector;
import java.io.*;
public class server implements Runnable {
static final String ANMELDUNG ="ANMELDUNG";
static final String ENDE ="ENDE";
static int port = 1234;
static int length = 256;
public void run() {
DatagramPacket paket = new DatagramPacket( new byte[length], length);
Vector clients = new Vector();
try {
DatagramSocket socket = new DatagramSocket(port);
for( ;; ) {
socket.receive( paket );
InetSocketAddress add = (InetSocketAddress)paket.getSocketAddress();
String text = new String(paket.getData(), 0, paket.getLength());
System.out.println( add +">" + text);
if( text.equals( ANMELDUNG ) ) {
clients.add( add );
System.out.println( "Anzahl Clients: " + clients.size() );
} else if( text.equals( ENDE ) ){
clients.remove( add );
System.out.println( "Anzahl Clients: " + clients.size() );
} else {
for( int i=0; i<clients.size(); i++ ) {
InetSocketAddress dest = (InetSocketAddress) clients.get(i);
if( ! dest.equals( add ) ) {
paket.setSocketAddress( dest );
socket.send( paket );
System.out.println( "Kopie an " + dest );
}
}
}
}
}
catch( IOException e ) {
System.err.println( "Ausnahmefehler: " + e );
}
}
}
PLZ help
