Objeto, TXT ou XML o que enviar via Socket?

Tenho uma aplicação de um jogo do tipo banco imobiliario e estou tendo alguns problemas quanto tento enviar um objeto via socket, ocorre uma exceção do tipo: streamcorruptedexception invalid stream header, não sei dizer se é mesmo o objeto por ser muito grande que causa esse tipo de erro, creio que não, mas como vi em muito lugares que não é recomendado enviar o objeto em sí pela conexão, e que era melhor enviar um arquivo TXT ou um XML, pesquisei um pouco sobre a biblioteca XStream que gera um String que contem o XML do objeto que quero enviar, achei fantastico pois facilitaria muito já que teria que enviar somente um String e não um arquivo, baixei a biblioteca do site mas não consegui fazer com que o NetBeans reconhece, depois vi que tenho que coloca-la no CLASSPATH mas mesmo com a ajuda do Tutorial aqui do GUJ pra setar o CLASSPATH no win XP não consegui, se alguem conhecer um outro tutorial que talvez possa me ajudar e postar aqui ajudaria muito. Depois tentei serializar o objeto para um arquivo e enviar este via socket, criei este pequeno exemplo de teste:

CLIENTE:

public class Main {

  
    public static void main(String[] args) {
        try {
            Socket conexao = new Socket("127.0.0.1", 1234);

            Aluno aluno = new Aluno("nelson", 2.28);

            FileOutputStream geraArquivo = new FileOutputStream("teste.txt");
            ObjectOutputStream escreve = new ObjectOutputStream(geraArquivo);
            escreve.writeObject(aluno);

            FileInputStream leArquivo = new FileInputStream("teste.txt");
            BufferedInputStream pegaArquivo = new BufferedInputStream(leArquivo);
            byte[] buf = new byte[512];

            BufferedOutputStream mandaArquivo = new BufferedOutputStream(conexao.getOutputStream());

            pegaArquivo.read(buf);
            mandaArquivo.write(buf);

        } catch (IOException ex) {
            ex.printStackTrace();

        }
    }
}

SERVIDOR:

public class Main {

    
    public static void main(String[] args) {
        try {
            ServerSocket servidor = new ServerSocket(1234);
            Socket conexao = servidor.accept();

            BufferedInputStream entraArquivo = new BufferedInputStream(conexao.getInputStream());
            System.out.println("Fluxo de entrada de byte criado");
            byte[] buf = new byte[512];

            FileOutputStream escreve = new FileOutputStream("TESTE.txt");
            BufferedOutputStream escreveArquivo = new BufferedOutputStream(escreve);


            entraArquivo.read(buf);
            escreveArquivo.write(buf);


            FileInputStream leArquivo = new FileInputStream("TESTE.txt");
            ObjectInputStream criaObjeto = new ObjectInputStream(leArquivo);
            Aluno aluno = (Aluno) criaObjeto.readObject();
            System.out.println(aluno.nome + " - " + aluno.CR);
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }

    }
}

O cliente executa numa boa, mas o servidor exibe uma exceção: java.net.SocketException: Connection reset
Gostaria primeiramente de saber qual dos três caminhos tomar, mandar o objeto mesmo porque o erro pode não ter nada a ver com o envio do mesmo, utilizar o XStream para enviar as Strings contendo os XMLs ou enviar o arquivo do objeto serializado? quem tiver alguma experiência no assunto e puder ajudar fico grato, ou quem puder me ajudar com o problema com a biblioteca XStream também seria de grande ajuda.

Valeu!

eclipse!

Bom o problema com o erro de socket fechado eu resolvi, o cliente tava encerrando antes do servidor era simples, mas gostaria mesmo de ter entendido a dica do amigo acima.

Nelson Baggio, boa tarde.

Poderia dizer como vc resolveu esse problema?

Obrigado