# Server-Client Anwendung



## Weenzeal (26. Jan 2011)

Hi ich wollte mal mit Netzwerkprogrammierung beginnen und habe ein "Chatprogramm" geschrieben als ich dann anstatt integer zahlen nachrichten verschicken wollte kam folgender fehler:
java.net.SocketException: Connection reset

nun sieht mein Code so aus:

Server:

```
import java.io.*;
import java.net.*;
import java.util.*;


class Server {
	
	ServerSocket server = new ServerSocket(1234);
	
	Server() throws IOException{
		while(true){
			
			Scanner sc = new Scanner(System.in);			
			Socket client = server.accept();
			ObjectInputStream input = new ObjectInputStream(client.getInputStream());
			ObjectOutputStream output = new ObjectOutputStream(client.getOutputStream());
			try {
			System.out.println("Client: "+(String)input.readObject());
			} catch (ClassNotFoundException e) {
			System.out.println(e);
			}
			String msg;
			msg = sc.next();
			output.writeObject(msg);	
			output.flush();
			System.out.println("Server: "+msg);
			input.close();
			output.close();
			
		}
		
	}
	public static void main(String [] agrs){
		try{
			Server server = new Server();
		}catch(IOException e){
			System.out.println(e);
		}
	}
  
}
```

Client:

```
import java.io.*;
import java.util.*;
import java.net.*;

class Client {
	
	Client() throws IOException{
		while(true){
			Scanner sc = new Scanner(System.in);
			Socket server = new Socket("localhost",1234);
			ObjectInputStream input = new ObjectInputStream(server.getInputStream());
			ObjectOutputStream output = new ObjectOutputStream(server.getOutputStream());
			String msg = sc.next();
			output.writeObject(msg);
			output.flush();
			System.out.println("Client: "+msg);
			try{
				System.out.println("Server: "+(String)input.readObject());
			}catch (ClassNotFoundException e){
				System.out.println(e);
			}
			System.out.println("Server: "+input.read());
			server.close();
			input.close();
			output.close();
		}
		
		
		
	}
	
	
   public static void main(String args[]) {
      try {
    	  Client client = new Client();
        
      }
      catch(IOException e) {
         System.out.print(e);
      }
   }
}
```

als ich anstatt object input und outputstream den normalen input und outputstream hatte und zahlen hin und her schickte ging es noch aber nun weiß ich nicht weiter. Der oben genannte Fehler tritt bei dem Server auf der Client macht einfach garnichts wenn ich ihn dann wieder schließe taucht der Fehler beim Server auf. Falls dies noch wichtig ist betriebssystem: win7 und ich benutze eclipse. würde mich über hilfe freuen.

mfg Weenzeal


----------



## SlaterB (26. Jan 2011)

die Reihenfolge ist hier wichtig, wenn du einen ObjectInputStream definierst, dann ist der Konstruktor erst fertig, 
wenn ein paar erste Bytes schon gelesen werden können (Header)

du definierst auf beiden Seiten erst den InputStream, beide warten auf Daten von anderer Seite, die nicht kommen werden,
weil die OutputStreams erst danach definiert werden,
mindestens ein Definitionspaar musst du umdrehen, am besten sogar überall erst Output, dann Input anlegen


----------



## Weenzeal (26. Jan 2011)

Ok es funktioniert  danke für die schnelle hilfe


----------

