Connection reset, wieso?

xRaizzzer

Mitglied
Hey liebe Community!
Ich versuche ein kleinen Server in Java zu machen (für ein Client in Javascript, via. Web), und habe mir noch extra eine Client-Server in Java erstellt, da ich öfters immer keine Verbindung via. JS aufbauen konnte.

So, zu meinem Problem [...]: Jedes mal wenn ich vom Client eine Nachricht an den Server schicke, bekomme ich immer eine Socket Exception und der Server schaltet sich automatisch wieder aus.

Mein Code:
Server
Java:
package Server;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;


public class SocketServer {
	
	public void connect(int port) {
		ServerSocket server;
		Socket client;
		BufferedReader buff;
		
		try {
			server = new ServerSocket(port);
			System.out.println("[SERVER]: Initialisiere Server auf Port " + port);
			
			client = server.accept();
			buff = new BufferedReader(new InputStreamReader(client.getInputStream()));
			String print = buff.readLine();
			
			System.out.println("[CLIENT]: " + print);
		}
		catch (Exception e) {
			System.out.println("[SERVER]: " + e.toString());
		}
	}
}

Client:
Java:
package Client;

import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

public class Main {

	public static void main(String[] args) {
		Socket s;
		PrintWriter p;
		
		try {
			s = new Socket("127.0.0.1", 1723);
			String message = "hi";
			
			p = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
			p.print(message);
			p.flush();
		}
		catch (Exception e) {
			System.out.println(e.toString());
		}

	}

}

Was mache ich falsch?
MfG.
 
Zuletzt bearbeitet von einem Moderator:
[ot]
Bitte die
Java:
-Tags verwenden für Java Code, danke!
[/ot]

Es ist immer gut eine Exception inkl StackTrace zu posten wenn man eine hat!
 
Du liest am Server genau eine Nachricht ein, dann ist das Ende der Methode connect erreicht und es gibt nichts mehr auszuführen -> Der Server wird beendet. Du solltest für jeden Client der erstellt wird einen neuen Thread erstellen, der in einer while Schleife auf eingehende Nachrichten wartet; in etwa so:

Java:
String msg;
while((msg = reader.readLine()) != null) {
System.out.println(msg)
}
 
Eine Exception gibt man auch (solange noch in der Entwicklung) nicht mit

System.out.println( e.toString() );

aus, sondern mit

e.printStackTrace( System.err ); System.err.flush();

Das bietet gleich deutlich mehr Information dazu, was wo schiefgeht.
 

Zurück
Oben