# Serialisierung über Sockets möglich?



## akira (26. Jun 2004)

Hi,

ich möchte eine Client-Server-Kommunikation über Sockets realisieren.
Es ist mir besher auch gelungen mehrere Clients mit einem Server zu verbinden und einzelne Bytes über die Input-/OutputStreams auszutauschen.

Ich hatte mir nun überlegt, statt den Bytes komplette Transfer-Objekte per Serialisierung zu übertragen.
Dazu wollte ich die ObjectStreams wie follgt erstellen:


```
class Client extends Thread {

    private boolean running;
    private Socket socket;
    private ObjectInputStream in;
    private ObjectOutputStream out;

    protected void connect(String server, int port) throws IOException, UnknownHostException {
        System.out.println("connect start.");
        socket = new Socket(server, port);
        System.out.println("socket created.");
        in = new ObjectInputStream(socket.getInputStream());
        System.out.println("InputStream created.");
        out = new ObjectOutputStream(socket.getOutputStream());
        System.out.println("OutputStream finished.");
    }

    ..............
}
```

Das Problem ist nun, das das Program nach der Ausgabe "socket created" hängenbleibt, also bei der Erstellung des ObjectInputStreams. 

Ist es nicht möglich ObjectStreams über Sockets zu realisieren oder was mache ich falsch?


----------



## Dante (26. Jun 2004)

Das schaut mir eher danach aus, als würde der Socket Probleme haben, teste doch mal ob der wirklich schon funktioniert (also ohne den ObjectInputStream etwas direkt in den InputStream des Spckets zu schreiben)


----------



## akira (26. Jun 2004)

> Das schaut mir eher danach aus, als würde der Socket Probleme haben, teste doch mal ob der wirklich schon funktioniert (also ohne den ObjectInputStream etwas direkt in den InputStream des Spckets zu schreiben)



Nein, ich hab es eben nocheinmal ausprobiert. Mit einzelnen Bytes klappt es wunderbar.

Hat jemand noch eine andere Idee?


----------



## Dante (26. Jun 2004)

Ein Blick in die API hilft:

public ObjectInputStream(InputStream in)
                  throws IOException 

Creates an ObjectInputStream that reads from the specified InputStream. A serialization stream header is read from the stream and verified. This constructor will block until the corresponding ObjectOutputStream has written and flushed the header.


----------

