Probleme bei Chatserver

Status
Nicht offen für weitere Antworten.

Lay-C

Aktives Mitglied
Hi ihr,

ich versuche gerade zur Übung einen kleinen Chatserver zu implementieren...

Allerdings will er irgendwie nicht so recht funktionieren und ich weiß nicht warum... ich hoffe ihr könnt mir helfen:

Klasse Server:
Code:
public class Server {
	private ServerSocket ss;
	private ArrayList<Socket> sockets;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		if(args.length == 1){
			try{
				System.out.println("Binding to Port "+args[0]+"...");
				new Server(Integer.parseInt(args[0]));
			} catch (Exception e) {
				System.out.println("Could not bind to Port: "+args[0]);
				System.out.println("Binding to Port 5000...");
				new Server(5000);
			}
		} else if(args.length == 0){
			System.out.println("Binding to Port 5000...");
			new Server(5000);
		} else {
			System.out.println("Usage: java Server [port]");
		}

	}
	
	
	private Server(int port){
		try {
			ss = new ServerSocket(port);
			sockets = new ArrayList<Socket>();
			System.out.println("Connection is open.");
			while(true){
				Socket s = ss.accept();
				sockets.add(s);
				new ServerThread(this, s).start();
			}
		} catch (IOException e) {
			System.out.println("Could not create: "+ss);
		}
		
	}
	
	public void react(String input){
		sendToAll(input);
	}
	
	private void sendToAll(String message){
		for(Socket s:sockets){
			try {
				System.out.println("Sending \""+message+"\" to "+s);
				new DataOutputStream(s.getOutputStream()).writeBytes(message);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

Klasse ServerThread:
Code:
public class ServerThread extends Thread{
	private Socket socket;
	private DataInputStream dis;
	private Server server;
	
	public ServerThread(Server serv, Socket s){
		socket = s;
		server = serv;
		System.out.println("New connection "+s);
		try {
			dis = new DataInputStream(socket.getInputStream());
			System.out.println("InputStream open.");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void run(){
		while(true){
			try {
				System.out.println("Reading next Line:");
				String s = dis.readUTF();
				System.out.println(s);
				server.react(s);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

Klasse Client:
Code:
public class Client {
	private Socket s;
	private DataOutputStream dos;
	private DataInputStream dis;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Client c = new Client("127.0.0.1", 5000);
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		c.send("Hello\r\n");
		c.send("World!");
	}
	
	private Client(String host, int port){
		try {
			s = new Socket(host, port);
			dis = new DataInputStream(s.getInputStream());
			dos = new DataOutputStream(s.getOutputStream());
			new Thread(){
				public void run(){
					while(true)
					try {
						System.out.println(dis.readUTF());
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}.start();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void send(String message){
		try {
			dos.writeBytes(message);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

Es treten keine Exceptions auf... beim Server wird
"Binding to Port 5000...
Connection is open.
New connection Socket[addr=/127.0.0.1,port=3391,localport=5000]
InputStream open.
Reading next Line:"
ausgegeben.

Beim Client garnichts...

Ich hoffe ihr könnt mir sagen woran das liegt...

mfg,
Lay-C
 

Geeeee

Bekanntes Mitglied
Der Client macht schonmal keine Ausgabe, weil das read im Thread blockiert und wenn ich das richtig sehe, sendest du vom Server nix aus. Dort ist eine react()-Methode (wird hier was gesendet?), die jedoch auch erst nach dem blockierenden read() aufgerufen wird.
Bin mir gerade aber unsicher, warum deine Aufrufe von send aus der main-Methode im Client nicht stattfinden.
 

Lay-C

Aktives Mitglied
weil das read im Thread blockiert
damit meinst du das "dis.readUTF()" oder?

Dort ist eine react()-Methode (wird hier was gesendet?)
Da müsste etwas gesendet werden... die react ruft ja die SendToAll auf (ich will das ganze später noch mit Kommandos versehen dass es je nachdem nicht an alle sendet z.B)... aber die ist ja wie gesagt blockiert...

Das Problem liegt dann wahrscheinlich darin, dass die Client.send nicht sendet oder?

Habs jetzt auch nochmal anders versucht:

Die neue main der Clientklasse:
Code:
public static void main(String[] args) {
		final Client c = new Client("127.0.0.1", 5000);
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		new Thread(){
			public void run(){
				while(true){
					try {
						c.send(new DataInputStream(System.in).readUTF());
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
		}.start();
	}
 

Geeeee

Bekanntes Mitglied
Mach mal so:
[HIGHLIGHT="Java"]
new Thread(){
public void run(){
while(true){
try {
c.send("Wurst");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
[/HIGHLIGHT]
Das ist schonmal ein Anfang, weil dann kannst du was sehen.
 

Lay-C

Aktives Mitglied
So bekomm ich jetzt nach n paar sekunden was...

kann es sein dass es einfach n bisschen dauert bis der Server "aufnahmefähig" ist?

Edit: allerdings ist die erste Zeile die er bekommt nicht "Wurst" sondern nur "rst"...
 
Zuletzt bearbeitet:

Geeeee

Bekanntes Mitglied
Evtl. nach 5 Sekunden? :cool:
[HIGHLIGHT="Java"]
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
[/HIGHLIGHT]
 

Lay-C

Aktives Mitglied
ähm... ja xD... hab ich garnichmehr gemerkt dass ich des da rein gemacht hab ^^
jetzt funktionierts...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme mit OutputStream Netzwerkprogrammierung 7
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
G Probleme mit SecruityManager + RMI Netzwerkprogrammierung 10
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
P Probleme bei Chat programm Netzwerkprogrammierung 2
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
C Probleme bei Dateiupload mit socket Netzwerkprogrammierung 4
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
G Probleme bei Proxy-Server! Netzwerkprogrammierung 5
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
A Chatserver/-client - Code stoppt bei readUTF() Netzwerkprogrammierung 7
Messoras Socket Chatserver mit mehreren OutputStreams Netzwerkprogrammierung 2
I ChatServer Netzwerkprogrammierung 9
J Socket Chatserver aus dem Internet nicht erreichbar Netzwerkprogrammierung 19
J Implementation Chatserver Netzwerkprogrammierung 4
A ChatServer Grafisch aufbauen Netzwerkprogrammierung 4
T Kleiner Chatserver: Threads oder Multiplex? Netzwerkprogrammierung 18

Ähnliche Java Themen

Neue Themen


Oben