Porque não funciona: Socket

Ola a todos,

Bom estou com algum problema num codigo basico de Socket e não sei o porque ele não esta funcionando…
Se alguem conseguir achar o erro pra mim eu agradeceria muito
:smiley:

Server


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package testesocket;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Gabriel
 */
public class TesteServer {

    List<Socket> list = new ArrayList<Socket>();
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("SERVER");
        new TesteServer();
    }

    public TesteServer() {
        
        ServerSocket server = null;
        
        try{
            server = new ServerSocket(7000);
            
            for(;;){
                
                Socket socket = server.accept();
                System.out.println("ACCEPT");
                list.add(socket);
                
                new Thread(new SocketThread(socket)).start();
            }
            
            
        } catch(Exception ex){
            System.err.println(ex.getMessage());
            ex.printStackTrace();
        } finally {
            
            try {
                if(server != null)
                    server.close();
            } catch (Exception ex) {
                System.err.println(ex.getMessage());
                ex.printStackTrace();
            }
        }
    }
    
    private void tellEveryone(String message){
        
        for (Socket socket : list) {
            
            try{
                //DataOutputStream output = new DataOutputStream(socket.getOutputStream());
                PrintWriter output = new PrintWriter(socket.getOutputStream());
                
                output.write(message);
            
            } catch(Exception ex){
                System.err.println(ex.getMessage());
                ex.printStackTrace();
            }
        }
    }
    
    private class SocketThread implements Runnable{
        
        //DataInputStream input;
        BufferedReader input;

        public SocketThread(Socket socket) {
            try {
                //this.input = new DataInputStream(socket.getInputStream());
                this.input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            } catch (Exception ex){
                System.err.println(ex.getMessage());
                ex.printStackTrace();
            }
        }

        @Override
        public void run() {
            
            try {
                String message;

                System.out.println("wait");
                while((message = input.readLine()) != null){
                    System.out.println(message);
                    tellEveryone(message);
                }
            } catch (Exception ex){
                System.err.println(ex.getMessage());
                ex.printStackTrace();
            }
        }
    }
}

Client


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package testesocket;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

/**
 *
 * @author Gabriel
 */
public class TesteSocket {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("SOCKET");
        new TesteSocket();
    }

    public TesteSocket() {
            
        Socket socket = null;

        //DataOutputStream output = null;
        PrintWriter output = null;
        
        Scanner scan = new Scanner(System.in);
        
        try{
            socket = new Socket("localhost", 7000);
            
           new Thread(new Listen(socket)).start();
            //output = new DataOutputStream(socket.getOutputStream());
            output = new PrintWriter(socket.getOutputStream());
                
            
            for(;;){
                System.out.print("Digita: ");
                output.write(scan.next());
            }
        } catch(Exception ex){
            System.err.println(ex.getMessage());
            ex.printStackTrace();
        } finally {
            
            try {
                if(socket != null)
                    socket.close();
            } catch (Exception ex) {
                System.err.println(ex.getMessage());
                ex.printStackTrace();
            }
        }
    }
    
    private class Listen implements Runnable{
        
        //DataInputStream input;
        BufferedReader input;

        public Listen(Socket socket) {
            try {
                //this.input = new DataInputStream(socket.getInputStream());
                this.input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            } catch (Exception ex){
                System.err.println(ex.getMessage());
                ex.printStackTrace();
            }
        }

        @Override
        public void run() {
            
            try {
                String message;

                System.out.println("wait");
                while((message = input.readLine()) != null){
                    System.out.println(message);
                }
            } catch (Exception ex){
                System.err.println(ex.getMessage());
                ex.printStackTrace();
            }
        }
    }
}

Tanto o server quanto o client param no while logo apos o “wait” e eu não sei o porque