Chat Socketserver/Client. wo ist das Problem?

Status
Nicht offen für weitere Antworten.

DamienX

Aktives Mitglied
Hallo!

Habe mir auf die schnelle mal nen SocketServer zusammengestöpselt und dazu nen kleinen
Client geschrieben....

So eigentlich sollte auch alles prima laufen aber leider Gottes gibts probleme bei der Kommunikation
zwischen der Connection und dem Client.

Zum Aufbau:
Wie die meisten Chatbauten halt so aussehen habe ich eine Server Klasse, eine Session Klasse (quasi
der Verwalter der einzelnen Verbindungen) und eine Client Klasse die nix macht ausser erst mal
Nachrichten empfangen!

Ich habe mal einen Testfall konstruiert in dem der Client die Session mit Nachrichten BOMBADIERT!!!
und die Session eigentlich auf jede eingehende Nachricht zurückantworten sollte aber das ist nicht der Fall.
Nach mitlerweile 4 Stunden debuggen hab ich das große Problem immer noch nich gefunden.

Ich habe die Vermutung das die Threads sich irgendwann totwarten... (warum weiß ich allerdings nicht).
Da mir langsam die Ideen ausgehen poste ich hier mal die wichtigsten Codeteile...


Server:
Code:
public class Server extends Thread  {
	
	protected final int port;
	private ServerSocket serverSocket;
	private Vector<Session> sessions;              //Session Vector zum broadcasten
	private boolean end = false;
	
	public Server(Config config) {                 
		
		sessions = new Vector<Session>();
		
		System.out.println("Starting Server...");     //hier werden nur die wete aus der Config gezogen
		port = Integer.parseInt(config.getValue("clientport"));
		
		try {
			
			System.out.println("binding Serversocket...");
			serverSocket = new ServerSocket(port);          //ServerSocket
			System.out.println("complete!");
			
		} catch (IOException e) {
			System.out.println("Cannot bind Serversocket on port " +port);
		}
		
		this.start();         //Thread starten
	}
	
	public void run(){
		while(!end){
			try {
				System.out.println("Server is listening on port "+port);
				Socket clientSocket = serverSocket.accept(); //bei neuem connect
				
				sessions.addElement(new Session(this, clientSocket)); 
				sessions.lastElement().start();                      //neue Session starten
					
				System.out.println("New session at "+
						sessions.elementAt(sessions.size()-1).getConnectionTime());
				
				
			} catch (IOException e) {
				e.printStackTrace();
			}			
		}		
	}
	
	public void broadcast(String message){
		for(Session s : sessions){
				s.send(message+"\n\r");
		}
	}
}


Session:
Code:
public class Session extends Thread{
	
	private Socket client;
	private Server server;
	private BufferedReader in;
	private PrintWriter out;
	private Date connectionTime;
	private String Login;
	private boolean end = false;
	
	public Session(Server server, Socket client) {
		this.server = server;
		this.client = client;
		
		this.connectionTime = new Date();
		
		try {
			this.in = new BufferedReader(new InputStreamReader(client.getInputStream()));
			this.out = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public void send(String msg){
		this.out.println(msg);
	}
	
	

	@Override
	public void run() {
		
		String inc;
		
		while(!end){
			try {
				inc = in.readLine();
				out.println("Antwort");	
					//server.broadcast(inc);
					
			} catch (IOException e) {
				e.printStackTrace();
			}
		}		
	}
}

Client:
Code:
public class Client extends Thread{
	
	private BufferedReader in;
	private PrintWriter out; 
	private Socket socket;
	private boolean end = false;
	
	public Client(Config config) {
		try {
			System.out.println("Binding Socket on serverport...");
			socket = new Socket(config.getValue("serverip")
					,Integer.parseInt(config.getValue("clientport")));
			
			System.out.println("complete!");
			
			System.out.println("Getting streams...");
			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
			System.out.println("complete!");
			
			this.setPriority(Thread.MIN_PRIORITY);
			
		} catch (NumberFormatException e) {
		} catch (UnknownHostException e) {
			System.out.println("Could not find Server!");
		} catch (IOException e) {
		}
	}
	
	public void send(String msg){
		this.out.println(msg);
	}
	
	@Override
	public void run() {

		String inc;
		
		while(!end){
			try {
				inc = in.readLine();
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(inc);
			
			out.println("KOMM SCHON?\n\r");	
		}
	}	
}

Ich weiß... ich hasse es auch mich durch mehrteilige Surces durchzugraben aber ich wäre sehr dankbar wenn
mir jemand einen Tipp geben könnte.

Grüße Alex
 

CyD

Mitglied
Nabend,

ich hab deinen Source nur mal kurz überflogen.

Code:
protected final int port; // Zeile 4
port = Integer.parseInt(config.getValue("clientport")); // Zeile 14

Mit dem kleinen Wörtchen "final" macht du die Variable "port" im Endeffekt zu einer Konstanten.
Andersgesagt: port kannst du keinen anderen Wert mehr zu weisen.

Nur so als Tipp:
Versuchs mal hiermit.
(hilft in 90% der Fälle :wink: )

gruß
CyD
 
G

Guest

Gast
Sry da liegst du falsch!
port wird nich bei Deklarierung initialisiert sondern im Konstruktor.
Diese Möglichkeit ist meiner Meinung auch sauberer weil ich im Falle von unterschiedlichen Konfigurationen
die Werte anders setzen kann (Bsp Konstruktor mit default Werten und einer mit Daten aus nem configfile)!

Die Config Klasse arbeitet auch 1a! Mit dem hat das nix zu tun...
Der Client und die Session sind auch verbunden... in seltenen Fällen funktioniert auch die übertragung...
zb wenn ich this.send im Session-Mainloop aufrufe bekomm ich nach einiger Zeit auch ausgaben...
aber halt nicht immer... und daran verzweifel ich imo Moment!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
L Chat Fenster Netzwerkprogrammierung 1
J Socket Ein Chat Server Tutorial Netzwerkprogrammierung 8
S Java Chat Server Netzwerkprogrammierung 8
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
P Chat in Java Netzwerkprogrammierung 3
C Java Chat Admin Kenzeichnung Netzwerkprogrammierung 14
D Chat Server/mehre Client Netzwerkprogrammierung 9
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
C Microsoft Comic Chat Netzwerkprogrammierung 0
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
O Chat (Server) sendet an verschieden Benutzer. Netzwerkprogrammierung 10
J Chat programmieren Netzwerkprogrammierung 12
L Chat Server programmieren Netzwerkprogrammierung 10
TheJavaKid Webcam-Chat im Applet (ChatRoulette Klon) Netzwerkprogrammierung 10
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
K Socket Chat-GUI eigenes Event nach Empfangen Netzwerkprogrammierung 2
K chat Netzwerkprogrammierung 13
F RMI einfacher Chat - Callbacks(?) funktionieren nicht Netzwerkprogrammierung 7
L Socket Chat funktioniert nicht Netzwerkprogrammierung 2
T Socket Java Chat Netzwerkprogrammierung 2
xDarkSunx Chat JFrame Netzwerkprogrammierung 3
xDarkSunx Hilfe Chat Login Netzwerkprogrammierung 7
E JAVA Chat Netzwerkprogrammierung 19
C Java Chat funktioniert nicht richtig Netzwerkprogrammierung 6
I Chat-Client empfängt nichts vom Server Netzwerkprogrammierung 3
A Socket UDP Chat Verbindungsproblem im WWW (Server sendet ins leere) Netzwerkprogrammierung 11
A Multi-User-Chat Netzwerkprogrammierung 2
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
E Userliste für Chat Applet Netzwerkprogrammierung 4
L Socket Chat Server für mehrere Clients Netzwerkprogrammierung 7
J Framework/ Muster für Chat-ähnliches Programm gesucht Netzwerkprogrammierung 2
AMStyles Client Server basierter Chat Netzwerkprogrammierung 7
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
P Socket Chat selbst bauen + Multiusereditor Netzwerkprogrammierung 13
T Java Chat über UDP Netzwerkprogrammierung 7
Developer_X Habe fragen zur Chat Programmierung Netzwerkprogrammierung 4
P Java Multiuser Chat hohe Systemauslastung Netzwerkprogrammierung 24
D Hilfe ich komme bei meinem UDP chat Server nicht mehr weiter Netzwerkprogrammierung 9
B Die alte Leier: "Chat" Netzwerkprogrammierung 3
M chat funktioniert nicht (Connection refused: connect) Netzwerkprogrammierung 3
R Java-Chat-Applet funktioniert nur in Eclipse Netzwerkprogrammierung 3
S Client-Server Chat Problem nur im lokalen Netztwerk Netzwerkprogrammierung 23
J Client-Client-Chat ohne Serverbeteiligung Netzwerkprogrammierung 2
A Wichtig für einen Chat? Netzwerkprogrammierung 4
S Java Applet Chat Grundsatzfrage Netzwerkprogrammierung 6
R Java Chat über Inet connecten Netzwerkprogrammierung 3
F Chat Programm. Verständnisfrage while-Schleife Netzwerkprogrammierung 7
P Probleme bei Chat programm Netzwerkprogrammierung 2
C Voice Chat Netzwerkprogrammierung 3
G FAQ Chat geht nicht ? Netzwerkprogrammierung 4
T Schriftfarbe im Chat ändern Netzwerkprogrammierung 2
G ActionEvent klappt beim Chat nicht Netzwerkprogrammierung 5
J Kleines Problem mit Chat Server Netzwerkprogrammierung 2
T Chat-Client Netzwerkprogrammierung 12
G Chat zwischen applets: möglich? Netzwerkprogrammierung 2
T Chat mit mehreren Clients Netzwerkprogrammierung 3
C Chat , Streamproblem, PumpingException, Danke Netzwerkprogrammierung 2
S RMI Chat Problem, Client bekannt machen Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
K Lokaler Chat Netzwerkprogrammierung 5
S Chat aufs Internet ausweiten Netzwerkprogrammierung 5
J Router behindert Chat Netzwerkprogrammierung 9
S Knuddels Chat System: Bot / Nachrichten verschicken? Netzwerkprogrammierung 6
G Chat - was brauch ich Netzwerkprogrammierung 2
André B. Brauche Hilfe bei Chat Netzwerkprogrammierung 6
K Problem mit "Chat" Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
Paule Acces denied bei Chat Netzwerkprogrammierung 6
B Multi-chat Problem Netzwerkprogrammierung 3
N Java Chat-Problem Netzwerkprogrammierung 4
G Java Chat mit HTML Cleint Netzwerkprogrammierung 3
G Chat Programm - was ist los? Netzwerkprogrammierung 9
A server mit 2 Ports : Mit und ohne SSL Chat system Netzwerkprogrammierung 10
Z chat: wann http und wann sockets verwenden? Netzwerkprogrammierung 11
M Socket Verbindungen für einen Chat Netzwerkprogrammierung 10
R Mini-Chat löst BindException aus Netzwerkprogrammierung 7
F Multiclient Chat Netzwerkprogrammierung 12
K Chat: Nur 1 Verbindung zum Server möglich :( Netzwerkprogrammierung 6
K Chat: Verbindung kommt nicht zu stande Netzwerkprogrammierung 6
S JAV07P SGD client/server chat Netzwerkprogrammierung 4
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9
S Einfacher Multiuser chat in java Netzwerkprogrammierung 18
P SocketServer im lokalen netzwerk suchen Netzwerkprogrammierung 2
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
F SocketServer Problem Netzwerkprogrammierung 8
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
B Axis2 Webservice mit Client Zertifikat Authentifizierung Netzwerkprogrammierung 3
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
T Jetty mit Client-Zertifikat nur bei spezifischer URL Netzwerkprogrammierung 1
J Einlesen von Servernachrichten von TCP-Client Netzwerkprogrammierung 17
J Client-Server und SOAP Netzwerkprogrammierung 23
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben