すいません。質問させてください。

簡単なチャットシステムを作ろうと思い、
ObjectOutputStream/ObjectInputStreamでサーバ/クライアント間でのオブジェクトの入出力をしたいのですが、
クライアント側から送信されてきたメッセージを、スレッド内で受信して、それをクライアントに送るメソッドを作りました。

public static void sendAll(String name, String s, int color){ // クライアントにメッセージを送信するメソッド
if (connections != null){ // コネクションがあれば実行
for (Enumeration e = connections.elements(); // 要素を全て枚挙する
e.hasMoreElements();){
try {
ObjectOutputStream out = new ObjectOutputStream(
((Socket) e.nextElement()).getOutputStream()); // 出力ストリーム
out.writeObject(list); // ログイン名リストの送信
out.writeObject(name); // 発言者名を送信
out.writeObject(s); // 該当ソケットのクライアントに送信
out.writeInt(color); // 色情報を送信
out.flush();
}catch (IOException ex){}
//}
}
System.out.println(s); // サーバのコンソールにも表示
}

これをクライアントのスレッドで受信しようとすると、StreamCorruptedExceptionが起こって受信出来ません。
ObjectOutputStreamの代わりにPrintWriterにしてBufferedReaderで読めばすんなり入出力出来るのですが・・・。

ちょっとAPIやgoogleで色々調べたものの、良くわからなかったので、どなたかご教授頂けませんでしょうか。