import java.net.*;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.io.*;

    public class Server{
     private ServerSocket serversock;
     private Socket sock = null;
     private HashMap hm = new HashMap();
   
     public Server(){
        try{
       
           // port번호를 받아들여 ServerSocket 생성.
        int port = 10013;
           ServerSocket serversock = new ServerSocket(port);
           System.out.println("Client Wait..");
  
           /* accept()를 시행하고 블러킹 상태.
            * Client로 부터 소켓 연결 요청이 들어오면
            * 그 소켓을 인자로 EchoThread를 생성하고 스레드 시작.
            */
           while(true){
              Socket sock = serversock.accept();
              //PrintWriter pw = new PrintWriter(sock.getOutputStream());
              EchoThread echothread = new EchoThread(sock,hm);
              echothread.start();
           }
        }catch(Exception e){
           System.out.println("connect error !");
           System.out.println(e);
        
        }
     }

     public static void main(String[] args){
      new Server();
     }


     class EchoThread extends Thread{
      // 연결된 소켓을 받을 소켓멤버변수.
      private Socket sock;
      private BufferedReader br;
      private PrintWriter pw;
      private HashMap hm = new HashMap();
      private String ip;
      private boolean initFlag = false;
      InetAddress addr = sock.getInetAddress();
  
      // 생성자.
      public EchoThread(Socket sock,HashMap hm)
      {
         this.sock = sock;
         this.hm = hm;
        
         try{
            // 클라이언트의 IP를 구하고 연결 메시지 출력.
           
            System.out.println(addr.getHostAddress() + "Connected..");
            ip=addr.getHostAddress();
           
            // 연결된 소켓에 입력스트림과 출력스트림을 연결.
            br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            pw = new PrintWriter(new OutputStreamWriter(sock.getOutputStream()));
           
            broadcast("connect!");
            synchronized(hm){
             hm.put(ip,pw);
            }
           
            initFlag = true;
         }catch (Exception e) {
          System.out.println(e);
         }
      }
 
      public void run()
      {
          try{
           String msg = null;
           // 입력스트림에서 메시지가 올 경우.
           while((msg = br.readLine()) != null){
            // 메시지를 콘솔에 출력하고 그 메시지를 다시 출력스트림으로 전송.
            System.out.println("From " + addr.getHostAddress() + "'s Message: " + msg);
            broadcast("bc : "+msg);
              
            // 클라이언트에게 전송한 메시지가 exit 라면 종료.
            if(msg.equals("exit")){
             break;
            }
            }//while
           }catch(Exception ex){
            System.out.println(ex);
           }finally{
            synchronized(hm){ 
             hm.remove(ip);
             broadcast("bc : "+ip+" disconnect");
            }
            try{
                         if(sock != null){
                          pw.close();
                          br.close();
                          sock.close();
                         }
            }catch(Exception ex){
            }
           }//finally
      }
   
      public void broadcast(String msg){  
     synchronized(hm){ 
      Collection col = hm.values();
      Iterator iter = col.iterator();
      while(iter.hasNext()){
       PrintWriter pw = (PrintWriter)iter.next();
       pw.println(msg);
       pw.flush();
      }
     } 
    }//broadcast
     }
}

 
 
커넥트 에러가 떠요 ㅠㅠ

클라에서 메세지를 보내면 서버랑 연결되어있는 모든 클라한테 메시지를 보내는 서버 만든거거든요

다른 에러는 없는지 함 봐주세요