Java socket- meu cliente socket não ta recebendo as mensagens do servidor?

Além desse erro meu servidor esta lendo um numero automaticamente e dando um NumberFormatException, mesmo meu cliente não digitando nada, além disso oq achei estranho é que essa parte já tava pronta e eu já tinha testado e funcionado deixei guardada em um pacote nunca mais mexi, só coloquei uma a mais variável pra ler do cliente e começou a dar esse erro.
Servidor

    package Servidor;

import java.net.*;
import java.util.*;
import java.io.*;
public class Server {

public Server() {

}

public void IniciaServer(int porta) throws IOException {
	ServerSocket servidor=null;

	servidor=new ServerSocket(porta);
	System.out.println("Porta "+porta+" aberta");
	trataCliente(servidor);

	//servidor.close();
}


public  void trataCliente(ServerSocket servidor) throws IOException {
	while(true) {

		Socket cliente= servidor.accept();

		System.out.println("Cliente "+cliente.getInetAddress().getHostAddress()+" conectado");

		ClientT trata=new ClientT(cliente);
		Thread t= new Thread(trata);
		t.start();
	} 	




	}
}

Trata conexão com cliente

package Servidor;
 
import java.net.*;
    import java.util.*;
    import java.io.*;
    import Banco.*;

    public class ClientT implements Runnable{
    	Scanner s;
    	PrintStream p;
	Socket Cliente;
	public ClientT(Socket cliente) {
		Cliente=cliente;
		try {

			p=new PrintStream(cliente.getOutputStream());//envia dados 
			s=new Scanner(cliente.getInputStream());//recebe dados 
		} catch (IOException e) {

			e.printStackTrace();
		}

	}

	@Override
	public void run() {
		try {
			Repositorio repo=new Repositorio();
			Contas cl= new Contas();
			repo.carregaUsuarios(cl.getContas());
			GerenciarConta gc= new GerenciarConta();

			//Scanner ler= new Scanner(System.in);
			byte opc=1;
			while(opc!=4) {
				p.println("Bem-vindo ao Banco Central");
				p.println("1-Acessar Conta");
				p.println("2-Abrir Conta");
				p.println("3-Depositar");
				p.println("4-sair");	

				opc = s.nextByte();
				switch(opc) {

				case 1 :


					p.println("Numero da conta");
					int id= s.nextInt();
					p.println("Agencia");
					short ag= s.nextShort();
					p.println("Senha");
					short se=s.nextShort();
					if(gc.acessaConta(id,ag,se)==null) {
						p.println("Dados incorretos");
						break;
					}
					while(opc!=4) {
						p.println("Qual operacao deseja realizar");
						p.println("1-Extrato");
						p.println("2-Sacar");
						p.println("3-Transfarencia");
						p.println("4-Sair");

						opc = s.nextByte();
						switch(opc){
						case 1: gc.acessaConta(id, ag).extrato();break;
						case 2: 
							p.println("Valor do saque");
							float v=s.nextFloat();
							Thread t2= new Thread(()->{	 gc.acessaConta(id, ag).saca(v);repo.salvaUmUsuario(gc.acessaConta(id, ag));});

							t2.start();




							break;
						case 3:
							p.println("Valor a transferir");
							float vr=s.nextFloat();
							p.println("Numero da conta destino");
							int id2= s.nextInt();
							p.println("Agencia");
							short ag2= s.nextShort();
							Thread t3= new Thread(()->{	gc.acessaConta(id, ag).
								transferencia(vr,gc.acessaConta(id2,ag2));});
							t3.start();
							///gc.acessaConta(id).transferencia(valor,gc.acessaConta(id2));
							repo.salvaUmUsuario(gc.acessaConta(id, ag));
							repo.salvaUmUsuario(gc.acessaConta(id2, ag));break;
						case 4:p.print("saindo da conta"); break;

						}}break;



				case 2 :
					CadastraConta cad= new CadastraConta();
					cad.cadastra();break;
				case 3:
					p.println("Insira o valor do deposito");
					float valor= s.nextInt();
					p.println("Numero da conta");
					id= s.nextInt();
					p.println("Agencia");
					short agp=s.nextShort();
					Thread t1= new Thread(()->{	 gc.acessaConta(id, agp).deposita(valor);repo.salvaUmUsuario(gc.acessaConta(id, agp));});
					t1.start();
				case 4:p.println("Saindo");

				}

			}

			try {
				repo.SalvaUsuarios(cl.getContas());
			} catch (IOException e) {
				e.printStackTrace();
			}


		}catch (NoSuchElementException e) {
			System.out.println("Cliente "+Cliente.getInetAddress().getHostAddress()+"desconectado");
			e.printStackTrace();
		}
	}

}

Onde eu chamo o servidor

    import JDBC.*;
import Servidor.*;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Scanner;
public class BancoCentral {

	public static void main(String[] args) throws SQLException {
		
		
	//	GerenciaCon b=new GerenciaCon();
	 
	//	b.AtualizaContaBD();
		

	Server servidor=new Server();
	
	
		try {
			servidor.IniciaServer(8180);
		} catch (IOException e) {
			e.printStackTrace();
		}
	
	
	
	}
}

Cliente

import java.util.*;
import java.net.*;
import java.io.*;


public class Client{

public static void main (String[]args) throws UnknownHostException, IOException {
	Scanner teclado=new Scanner(System.in);
	int porta=teclado.nextInt();
	Socket cliente=new Socket("127.0.0.1",porta);
	ServerSocket servidor= new ServerSocket();
	
	   Scanner ler=new Scanner (cliente.getInputStream());
	  Thread t=new Thread(()->{ while (true) {
			System.out.println(ler.nextLine());}
	  
	  });
	Thread t2=new Thread(()->{
	
		
		
	
	 while (teclado.hasNextLine()) { try{
		 PrintStream send=new PrintStream(cliente.getOutputStream());
        send.println(teclado.nextLine());}catch(IOException e){e.printStackTrace();}
		
		
	 }} );
t.start();
t2.start();
   
	}
	
}

Veja no StackTrace em qual linha está gerando o erro.
Em algum momento está convertendo uma string em número.

não tem linha, é uma thread.

o problema é nã é nem que ele ta convertentendo o valor, o problema é que ele ta recebendo valo 0.0 sem niguem ter digitado nada