Objeke über das Netzwerk senden/empfangen

Firecloud

Mitglied
Hi,
bin grad dabei (oder Versuch es eher) mit Java Objekte über das Netzwerk zu senden/empfangen. So ne Art Client, Server. Bin noch am Anfang und probier ein bisschen rum.
Mein 'Server' warte darauf das sich ein Client verbindet und daten zu ihm schickt. Der Server macht was damit und schickt sie zurück.
Genauer : Der Client schickt ein int zum Server, der verdoppelt die Zahl und schickt ein Integer(ein Objekt!) zurück. Nun wollte ich das so machen, das auch der Client ein Integer zum server schickt, das funktioniert allerdings nicht. Wenn ihr auf mein Code schaut: Das senden von Objekten vom Server zum Client geht, andersrum nicht

Der Code der auskommentiert ist, geht nicht.

Bitte helft mir.

Code:
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;


public class net {

	private static void handleConnection( Socket client ) throws IOException, ClassNotFoundException
	  {
		/* Im Kommentar steht jeweils der Code der nicht funktioniert
		 * Der Code geht nicht, Warum?
	         * ObjectInputStream  in  = new ObjectInputStream(client.getInputStream());
		 */
	    InputStream  in  = client.getInputStream();
	    ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream());
	    
	    //Integer faktor1 = (Integer)in.readObject();
	    int factor1 = in.read();
	    
	    System.out.println(new Date().toString() + "-[Server]Daten erhalten");
	    
	    out.writeObject(new Integer(factor1*2));
	    System.out.println(new Date().toString() + "-[Server]Daten gesendet");
	    
	  }

	  public static void startServer() throws IOException, ClassNotFoundException
	  {
	    ServerSocket server = new ServerSocket( 3141 );

	    while ( true )
	    {
	      Socket client = null;

	      try
	      {
	        client = server.accept();
	        handleConnection ( client );
	      }
	      catch ( IOException e ) {
	        e.printStackTrace();
	      }
	      finally {
	        if ( client != null )
	          try { client.close(); } catch ( IOException e ) { }
	      }
	    }
	  }
	  
	  public static void startClient() throws ClassNotFoundException
	  {
	    Socket server = null;

	    try
	    {
	      server = new Socket( "localhost", 3141 );
	      ObjectInputStream in  = new ObjectInputStream(server.getInputStream());
	      
	      //ObjectOutputStream out = new ObjectOutputStream(server.getOutputStream());
	      OutputStream out = server.getOutputStream();

	      //out.writeObject(new Integer(5));
	      out.write(  5  );
	      
	          
	      int result = (Integer)in.readObject();
	     
	      System.out.println("[Client]Result: "+ result );
	      
	      
	    }
	    catch ( UnknownHostException e ) {
	      e.printStackTrace();
	    }
	    catch ( IOException e ) {
	      e.printStackTrace();
	    }
	    finally
	    {
	      if ( server != null )
	        try { server.close(); } catch ( IOException e ) { }
	    }
	  }
	  
	  public static void main(String[] args) throws IOException, ClassNotFoundException {
			String mode = "client";
			
			if(args.length>0) {
				for(int i=0;i<args.length; i++){
					if(args[i].equals("-server") || args[i].equals("server")){
						mode =args[0];
					}
				}
			}
			
			if(mode.equals("server") || mode.equals("-server")){
				startServer();
			}else startClient();
		}
}

Villeicht überseh ich etwas, hab ein Denkfehler....oder es ist einfach falsch und geht net so wie ich will -.-

MfG
Firecloud
 
Zurück