Xml via Sockets

Pessoal, o senário é o seguinte, estou desenvolvendo um jogo de palavras cruzadas entre dois jogadores(projeto da faculdade), a lógica do jogo está pronta, o problema está no envio do xml via socket, dei uma olhada no artigo daqui e em alguns posts, mas nada, ao meu ver, era parecido com a minha situação.

Assim que eu clicar, durante o jogo, no botão confirmar da tela principal eu mudo o atributo turno do jogador da vez pra false, o do outro pra true, incremento sua pontuação(ou não no caso de erro) e envio o xml via socket para a maquina do jogador adversário informando o que aconteceu e atualizando o que precisar. Quando é para o cliente enviar e o servidor receber o xml vai tudo direitinho, o problema é que não estou sabendo como enviar do servidor para o cliente (OBS: não coloquei o servidor em loop, ou seja, vou usar o método accept() a cada vez que clicar no botão confirmar da tela principal, o que preciso saber realmente é como enviar o xml do servidor para o cliente).

Da uma força ai ;D

Classes

Servidor:

package socket;

import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

import javax.swing.JOptionPane;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

import PalavrasCruzadas.Jogo;

public class Servidor {
	private ServerSocket servidor = null;
	private Socket socket = null;
	private Jogo J = new Jogo();
	
	public Jogo ServidorReceberXml(){
		String xml = new String();
		
		try{
			servidor = new ServerSocket(7000);
			
			socket = servidor.accept();
			
			Scanner entradaXml = new Scanner(socket.getInputStream());
		    
			while (entradaXml.hasNextLine()) {
				xml = xml + entradaXml.nextLine();
			}
			
			XStream tornarObjeto = new XStream(new DomDriver());
			J = (Jogo)tornarObjeto.fromXML(xml);
			
			
			return J;
		}catch(IOException e){
			JOptionPane.showMessageDialog(null, "Erro no Servidor!");
			return null;
		}finally{
			try{
				servidor.close();
				socket.close();
			}catch(IOException e){}
		}
	}
	
	
	public void ServidorEnviarXml(String xml){	
		
		try{
			servidor = new ServerSocket(7000);
			socket = servidor.accept();		
			
			PrintStream ps = new PrintStream(socket.getOutputStream());
			ps.println(xml);
			
			
		}catch(IOException e){
			JOptionPane.showMessageDialog(null,"Ocorreu um erro no servidor!");
			
		}finally{  
        
			try{   
				socket.close();  
				servidor.close();  
              
			}catch(IOException e){  
			}  
		}      
	}
	
	public Jogo getJogo(){
		return J;
	}
	
	public void setJogo(Jogo J){
		this.J = J;
	}
}

Cliente:

package socket;

import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

import PalavrasCruzadas.Jogo;

public class Cliente {
	Socket socket = null;
	Jogo J = new Jogo();
	String ip = null;
	
	
	
	public void ClienteEnviarXml(String ip, String xml){
		this.ip = ip;  		
		PrintStream ps = null;  
		try{    
          
			socket = new Socket(ip,7000);  
            
			ps = new PrintStream(socket.getOutputStream());  
            
			ps.println(xml);
        
		}catch(IOException e){  
          
			System.out.println("Algum problema ocorreu ao criar ou enviar dados pelo socket.");  
        
		}finally{  
          
			try{    
				socket.close(); 
              
			}catch(IOException e){}  
        
		}  
	}
	
	
	
	public Jogo clienteReceberXml(){ 
	    String xml = new String();

		try{ 
			
			socket = new Socket(ip,7000);  
			
			Scanner entradaXml = new Scanner(socket.getInputStream());
		    
			while (entradaXml.hasNextLine()) {
				xml = xml + entradaXml.nextLine();
			}
			
			XStream tornarObjeto = new XStream(new DomDriver());
			J = (Jogo)tornarObjeto.fromXML(xml);
			
			return J;
		}catch(IOException e){  
          
			System.out.println("Algum problema ocorreu ao criar ou enviar dados pelo socket.");  
			return null;
		}

	}
	
	public Jogo getJogo(){
		return J;
	}
	
	public void setJogo(Jogo J){
		this.J = J;
	}
}