Enviando e Recebendo Arquivo(Client-servidor)Socket TCP

Boa noite galera.

É o seguinte, criei uma classe Remota onde inicio servidor e conecto cliente(no caso sou servidor e cliente).
Gostaria de enviar uma String golpe, para que receba via socket tcp e dps trate ela.

Iniciando servidor e cliente:

public Socket iniciarCliente() {
        Socket socket = null;
        try {
            socket = new Socket(ip, porta);
            System.out.println("Cliente conectado");
        } catch (UnknownHostException ex) {
        } catch (IOException ex) {
        }
        
        return socket;
    }
    
    public Socket iniciarServidor() {
        ServerSocket socket = null;
        try {
            socket = new ServerSocket(porta);
            System.out.println("Servidor criado");
            return socket.accept();
            
        } catch (UnknownHostException ex) {
        } catch (IOException ex) {
        }
        
        return null;
    }

Metodos para enviar e receber.

public void enviar(String golpe) throws IOException{ 
		saidaserv.println(golpe);
		}


	
	public String receber() throws IOException {
		return entradacliente.readUTF();
			
	}

Agora tenho 2 threads onde uma é para enviar a string e outra para receber a string.
Recebe:

public void run() {	
		while(true){
			try {
				x = r.receber();
				System.out.println("recebido"+x);
				verificaTipoPersonagem(x,personagem);
				Dano(x,personagem,dano);
				receberDano(dano,vida);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

ENVIA:

public void run() {
	
		while(true){
			System.out.println("Digite um golpe");
			golpe = s.nextLine();
			Golpe(golpe, personagem,golpeanterior);
			try {
				r.enviar(golpe);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

Só que to vendo que não ta funcionando… eu estou apenas enviado, não estou conseguindo receber e assim tratar a string.

Gostaria de uma ajuda.

Grata.