Server Client Übermittlung von Objekte.

Angeltv

Mitglied
Hi,

sitze jetzt schon 2 Tage an dem Problem, hab auch aussführlich durch die Suche andere Beiträge gelesen, nur bin ich dadurch auch nicht wietergekommen. Ich möchte gerne zwischen 2 Klassen(Server und Client) Objekte wie String, int, Vector, austauschen. Hab auch schon was eigenes geschrieben nur läuft es da nicht so richtig, da ich mir die ganze Sache von nem alten Java Chatserver abgeguckt habe.

Kennt einer von Euch ne Seite wo man Infos für Socketübertragungen mit Threaderstellung bekommt. Oder kann mir jemand in kurzen Worte erklären wie ich das am besten mache?

Unten nochmal der Code wie ichs jetzt habe, aber da grausts einem. *g*


Vielen Dank schon mal für Eure Hilfe

Server:
Code:
import java.net.*;
import java.io.*;
import java.util.*;

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 

import java.net.ServerSocket; 
import java.net.Socket; 


/**
 *
 * @author  svto
 */
public class Server extends Thread {
    
    /** Creates a new instance of Server */
    public Server() {   
    }
    
    public static void main(String[] args){
        Logger log              = new Logger();
        log.welcome("Server", VERSION, CVSDATE);
        int cnt = 0;
        try{
            System.out.println("Warte auf Verbindungen auf Port " + PORT + "...");
            ServerSocket echod = new ServerSocket(PORT);
            while (true) {
                Socket socket = echod.accept();
                (new Connection(++cnt, socket)).start();
            }
        }catch (IOException e){
            System.err.println(e.toString());
            System.exit(1);
        }
    }
}


class Connection extends Thread{
    private              int        name;
    private              Socket     socket;
    Handler      r24h       = new Handler();
    
    public Connection (int name, Socket socket){
        this.name   = name;
        this.socket = socket;
    }
    
    public void run(){
        String msg = "EchoServer: Verbindung " + name;
        String ch = "";
        
        System.out.println(msg + " hergestellt");
            //******************************************************************
            try{
                OutputStream out = socket.getOutputStream();
                InputStream in = socket.getInputStream();
                out.write((msg + "\r\n").getBytes());
                int c;
                while ((c = in.read()) != -1){
                    ch +=((char)c);
                    out.write((char)c);
                    //System.out.print("lol");
                    
                }
                System.out.println("Verbindung " + name + " wird beendet");
                
            }catch(IOException e){
                System.out.println("Break");
                System.err.println(e.toString());
            }
            //******************************************************************
            try{
                OutputStream out2 = socket.getOutputStream();
                InputStream in2 = socket.getInputStream();
                
// Soll hier durch spätere Händler bearbeitet werden und zurückgehen
                String[] g = stringSpliter(ch);
                out2.write((g[0] ).getBytes()); 
                out2.write((g[1] ).getBytes()); 
                //- Actiontype
                String action = r24h.getAction(g[2]);
                out2.write((action ).getBytes()); 
                out2.write((g[3] ).getBytes()); 
                out2.write((g[4] ).getBytes()); 
                out2.write((g[5] ).getBytes()); 
            }catch(Exception e){
                System.out.println("Break2");
                System.err.println(e.toString());
            }
        socket.close();
    }
    
    public String[] stringSpliter(String strInput){
        return strInput.split("#");
    }
}

Client
Code:
import java.io.*; 
import java.util.*;

import java.io.BufferedReader; 
import java.io.StringReader;
import java.io.IOException; 
import java.io.InputStreamReader; 

import java.net.Socket; 
import java.net.UnknownHostException; 

public class Client { 
    private final static int    PORT    = 50090; 
    private final static String HOST    = "127.0.0.1";
    private static String sessId        = "44444";
    private static String userId        = "88888";
    private static Socket socket       = null; 
    private static PrintWriter out     = null; 
    private static BufferedReader in   = null; 
    
    public Client() { 
        super();
        
    } 
        
     
        
    public static void main(String[] args){
        try{
            //start(); 
            String g = start();
        }catch(Exception e){}
    }
    
    public static String start(/*String sessId, String userId*/) throws IOException {
        String startReturn = "123";
        try{ 
            socket  = new Socket(HOST, PORT); 
            out     = new PrintWriter(socket.getOutputStream(), true); 
            in      = new BufferedReader( new InputStreamReader(socket.getInputStream())); 
        }catch(UnknownHostException e){ 
            System.err.println("Don't know about host: " + HOST); 
            System.exit(1); 
        }catch(IOException e){ 
            System.err.println("Couldn't get I/O for the connection to: " + HOST); 
            System.exit(1); 
        } 
        
        Vector v = new Vector();
        v.addElement( sessId );
        v.addElement( userId );
        v.addElement( "html");
        v.addElement( "!Stop slave.");
        v.addElement( "id=12, pid=1");
        v.addElement( "noError");
        v.addElement( "endInput-1");
        
        StringReader sr        = new StringReader(v.firstElement().toString());
        BufferedReader stdIn   = new BufferedReader(sr);
        
        String fromServer; 
        String fromUser;
        int i = 0;
        Enumeration e = v.elements();
        
        while ((fromServer = in.readLine()) != null) { 
            
            if(v.equals("endInput-1") || fromServer.equals("Ok, my Master: I stopped!")) {
                closeClient();
                break;
            }
            sr        = new StringReader(e.nextElement().toString());
            stdIn     = new BufferedReader(sr);
            System.out.println("Server: "+ i + "__" + fromServer);
            
            fromUser = stdIn.readLine(); 
            if (fromUser != null){ 
                //System.out.println(fromUser + "#"); 
                out.println(fromUser + "#"); 
            }
            i++;
        }
        startReturn += "ääääää";
        return startReturn;
    }
    public static void closeClient(){
        try{
            out.close(); 
            in.close(); 
            socket.close(); 
            System.out.println("INFO: Abfrage erfolgreich");
        }catch(Exception E){
            System.out.println("FEHLER:" + E);
        }
    }
}
 
Zuletzt bearbeitet:
Zurück