Kommunikation zw. Server und mehreren Clints haut nicht hin

Status
Nicht offen für weitere Antworten.

JDuke

Mitglied
Hellas!

Ich möchte gerne eine Verbindung zwischen einem Server und mehreren Clients herstellen.
Das gehört zu einem kleinen Spiel, das ich programmiere. In dem die Reaktionszeit des Clients getestet wird.
Bei der kommunikation hab ich noch ein kleines Problem.
Der Server registriert zwar dass sich ein Client angemeldet hat, jedoch wenn ich probiere etwas vom Client zum Server zu schicken bekommt dieser nichts!
Als vorlage habe ich den Server - Client Chat von diesem Forum verwendet.


Hier der Quellcode:

:arrow: Client.java
Code:
package ClickDaPic.client;

import java.net.*;
import java.io.*;
import java.util.*;
import javax.swing.*;

public class Client
{
	Socket s;
   	PrintWriter out;
 	BufferedReader in;

   	private String ip;
   	private int port;

   	public Client(String ip, int port) {
      	this.ip=ip;
      	this.port=port;
      	
   	}
   
   	public void startClient()
   	{
   		try
   		{
   		s = new Socket(ip, port);
      		out = new PrintWriter(new DataOutputStream(s.getOutputStream()));  
      		System.out.println ("Starte Client...");
      		new ClientBody(s.getInputStream()).start();   
      		System.out.println("Client gestartet...\n\n");  
   		}
   		catch(UnknownHostException e)
   		{
   			System.out.println ("[ERROR] Host not found\n"+e.getMessage()+" in "+getClass().getName());
   		}
   		catch(IOException e)
   		{
   			System.out.println ("[ERROR] Server not found\n"+e.getMessage()+" in "+getClass().getName());
   		}

   		System.out.println ("Sending test");
   		send("time|mani"+(int)(Math.random()*10)+"|"+(int)(Math.random()*1000));
   		System.out.println ("time|mani"+(int)(Math.random()*10)+"|"+(int)(Math.random()*1000));
   		System.out.println ("Testtime sent!");
	   	
   	}
   	
   	public void send(String msg)
   	{
   		out.println(msg);	
   	}

}

:arrow: ClientBody.java
Code:
package ClickDaPic.client;

import java.io.*;


public class ClientBody extends Thread
{
	private InputStream i;
	private String msg;
	private BufferedReader in;
   	
   	public ClientBody(InputStream i) {
      	this.i=i;
   	}
	
	public void run()
	{
		String[] result;
		
		try
		{

			in = new BufferedReader(new InputStreamReader(i));
			msg = in.readLine();
			while(!msg.contains("stop"))
			{	System.out.println (msg);
				if(msg.contains("show"))
				{	
					result = msg.split("|");
				}
				
			}
		
		}
		catch(IOException e)
		{
			System.out.println ("[EROOR] IO Error\n"+e.getMessage()+" in "+getClass().getName());
		}
	}
}

:arrow: Server.java
Code:
package ClickDaPic.server;

import java.util.*;
import java.net.*;

public class Server
{
	private int port;
	private Hashtable clients;
	private int counter;
	
	public Server(int port)
	{
		this.port = port;
		clients = new Hashtable();
	}
	
	private void startServerListener() 
	{
    	ServerSocket ss ;
      	try 
      	{
      		ss = new ServerSocket(port);
         	System.out.println("Server gestartet...");
         	while (true)
         	{   
            	new ServerBody(ss.accept(), this).start();
            	System.out.println ("Online Clients: ["+(++counter)+"]");   
      		}	
      	}
      	
      	catch (Exception e) 
      	{
         	System.out.println ("[ERROR] "+e.getMessage()+" "+getClass().getName());
        }
 
   	}
   	
  	public void broadcast(String name, String msg) throws Exception {
   	for (Enumeration e = clients.keys();e.hasMoreElements();)         
     	((ServerBody) clients.get((String) e.nextElement())).send(name + ": " + msg);     
 	}
 	
 	public void send(String name, String targetname, String msg) throws Exception {
      	((ServerBody) clients.get(targetname)).send(name + ": " + msg);     
   	}
   	
   	public void removeClient()
   	{
   		counter--;
   	}
   
     
  	public static void main(String[] args)
	{
		new Server(1234).startServerListener();
	 	
	}
}

:arrow:ServerBody.java
Code:
package ClickDaPic.server;

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

class ServerBody extends Thread{
   	private Socket cs;
   	private Server server;
   	private PrintWriter out;
   	private BufferedReader in;
   	String input;
   	String output;

   	public ServerBody(Socket cs, Server server) {
      	this.cs=cs;
      	this.server=server;
   	}
   	
   	public void run()
   	{

		try 
		{  
         	in = new BufferedReader (new InputStreamReader(cs.getInputStream()));
         	out = new PrintWriter(new DataOutputStream(cs.getOutputStream()));         
        
        	
			System.out.println ("Input?");       //Das wird noch ausgegeben *****
			input = in.readLine();                   //Hier tut sich nichts mehr
			System.out.println ("Received?");  //Wird nicht mehr ausgegeben
			while(!input.contains("stop"))
			{	
				System.out.println (input+" Received");
				String[] substring;
				substring = input.split("|");
				if(substring[0].equals("time"))
					System.out.println ("Recorded Time!");
			}
		
		}		
		catch(Exception e)
                {
			System.out.println ("[ERROR]\n"+e.getMessage()+" in "+getClass().getName());
			server.removeClient();
		}
		         	
   	}
   	
   	public void send(String output) throws Exception {
      	out.println(output);
      	out.flush();
   	}
}

Das ist nur ein "dummer" prototyp woduch ich mich ein wenig in die Kommunikation einarbeiten wollte...
**** Ab hier tut sich nichts mehr... ich finds einfach nicht raus warum. Vielleicht hilft ein Blick eines Außenstehenden.

Danke für die Hilfe schon mal im Voraus
Greetz
 
M

mightymop

Gast
die methode readline() und konsorten wie read... sind blockierende calls... dass heißt sie wartet solange bis daten im stream zum lesen bereitstehen... wie deinen kommentaren zu entnehmen ist kommt der irgendwann an der methode an und wartet nun auf daten...



hast du denn daten geschickt? wenn ja hast du es mal mit haltepunkten versucht? und geschaut ob die verbindung zu dem zeitpunkt wo du daten losgeschickt hast überhaupt noch bestand? am besten immer in der catch anweisung des tryblocks n haltepünktchen setzen... dann siehst du sofort wenn ein fehler aufgetreten ist dass er rausspringt udn kannst der exception variable entnehmen was schief gegangen ist... blabla

mfg
mightymop
 

SebiB90

Top Contributor
zeig mal die main methode vom client

Nachtrag:
fehler gefunden nach out.println() immer out.flush() machen!!! sonst wird es nicht abgeschickt, steht auch in den FAQ so.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Rmi Kommunikation Server zu mehreren Clients? Netzwerkprogrammierung 3
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
S Server Kommunikation Netzwerkprogrammierung 1
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
Shams Anfängerfrage zu Server-Socket-Kommunikation Netzwerkprogrammierung 2
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
R Server zu Client Kommunikation Netzwerkprogrammierung 11
V Socket UDP Server/Client Kommunikation sehr langsam Netzwerkprogrammierung 2
C Socket Kommunikation mit SMTP-Server Netzwerkprogrammierung 4
J Kommunikation von Webanwendungen (auf Tomcat Server) untereinander Netzwerkprogrammierung 8
F Socket Server/Client Kommunikation Netzwerkprogrammierung 4
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
D Server-Client (Web) Kommunikation Netzwerkprogrammierung 9
E Client-Server-Kommunikation Netzwerkprogrammierung 13
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
G Problem mit Client-Server Kommunikation Netzwerkprogrammierung 4
G unvollständige Daten: Http Client-Server-Kommunikation Netzwerkprogrammierung 2
J client/server kommunikation Netzwerkprogrammierung 3
M Client-Kommunikation ohne Server Netzwerkprogrammierung 7
S Kommunikation Fortran <-> Java auf Client-Server-Archi Netzwerkprogrammierung 2
G JINI über RMI // Client-Server Kommunikation Netzwerkprogrammierung 4
G Socket Socket Kommunikation Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
T Client zu Client Kommunikation Netzwerkprogrammierung 2
K Socket Nur bestimmte Zeichen als Kommunikation zulassen Netzwerkprogrammierung 1
H Android - PC kommunikation Netzwerkprogrammierung 3
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
M Kommunikation übers Internet Netzwerkprogrammierung 9
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
M Socket Verschlüsselte Kommunikation - Fehler Netzwerkprogrammierung 1
I Interne Computer Kommunikation Netzwerkprogrammierung 6
Y HTTP Google Reader API Kommunikation Netzwerkprogrammierung 3
H Kommunikation Netzwerkprogrammierung 8
E Zeitgleiche Kommunikation, mögliche Ansätze Netzwerkprogrammierung 17
1 Java to Android TCP Kommunikation Netzwerkprogrammierung 2
O php - applet Kommunikation Netzwerkprogrammierung 9
D HTTP Java HTTP Kommunikation Netzwerkprogrammierung 9
1 SSH-Kommunikation - Ende eines Streams nicht erkenntlich Netzwerkprogrammierung 2
R Kommunikation TCP + UDP Netzwerkprogrammierung 3
S RMI RMI-Applet kommunikation funktioniert nicht Netzwerkprogrammierung 8
1 Kommunikation mit externem Programm über TCP Netzwerkprogrammierung 2
DamienX Socket Asnchrone Kommunikation Netzwerkprogrammierung 5
Raidri Rückwertige RMI Kommunikation Netzwerkprogrammierung 6
S TCP/IP-Kommunikation ist zu langsam Netzwerkprogrammierung 13
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
G java asynchrone kommunikation Netzwerkprogrammierung 8
N Servlet-RMI Kommunikation Netzwerkprogrammierung 8
G Objecte für Kommunikation nutzen Netzwerkprogrammierung 2
L http kommunikation mit und ohne multipart Netzwerkprogrammierung 4
D Einfache Applet-Servlet-Kommunikation Netzwerkprogrammierung 5
RaoulDuke RMI Kommunikation Java <-> Perl Netzwerkprogrammierung 7
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
S Kommunikation zweier Java-Programme Netzwerkprogrammierung 6
T Kommunikation auf Byte-Ebene zw. C und Java via Socket Netzwerkprogrammierung 12
K Socket Kommunikation Netzwerkprogrammierung 3
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
R applet servlet kommunikation Netzwerkprogrammierung 2
D Kommunikation zwischen mehreren Servlets??? Netzwerkprogrammierung 3
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
W Socket Server -> lesen von / schreiben zu php-script Netzwerkprogrammierung 6
E Server mit GUI Netzwerkprogrammierung 4
E FTP FTPS Server gibt Fehlernachricht "522 SSL/TLS required on the data channel" zurück Netzwerkprogrammierung 1
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
Eigenen Rechner als Server? Netzwerkprogrammierung 16
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
J Datei Download vom Server Netzwerkprogrammierung 8
izoards Mehrere TCP Verbindungen auf einen Server [alles Local] Netzwerkprogrammierung 2
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23
K Threads/Server/telnet Fehler Netzwerkprogrammierung 2
J Multithreaded-Server Netzwerkprogrammierung 21
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
L30nS RMI RMI-Server kann Dialog nicht volkommen anzeigen Netzwerkprogrammierung 2
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
F NodeJs-Server auf Firebase hosten ? Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12

Ähnliche Java Themen

Neue Themen


Oben