채팅 프로그램을 만들어 보고 있습니다. 소켓 통신을 하고 있으며 서버는 자바고
클라이언트는 안드로이드 에뮬로 사용하고 있어요. 그런대 클라이언트가 메세지를 보내면
서버에서 메세지를 받고 전체 전체 접속한 클라이언트에게 메세지를 다시 전송하는 것인데...  DataInputStream 으로 나름 구분자 넣어서
보내는 형식이고요. ㅠ_ㅠ
클라이언트에서 메세지 전송 -> 서버가 받고 -> 보낸 클라이 언트에게만 메세지를 두번 보내고 있습니다.
다른 접속자는 메세지 수신이 안되고 있고요.

static List<PrintWriter> list = Collections.synchronizedList(new ArrayList<PrintWriter>());

PerClientThread(Socket socket){
  this.socket = socket;
  try {
   writer = new PrintWriter(socket.getOutputStream());
   list.add(writer);
  }catch(Exception e) {
   System.out.println(e.getMessage());
  }
 }

이런 식으로 서버를 만들었고.

전체 메세지 보내는 곳은 이렇습니다.
private void sendAll(String str) {
  for(PrintWriter writer : list) {
   try {
    Dout.writeByte((byte)2); // 구분자
    Dout.writeUTF(str);  //메세지
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
 }

writer 값 :java.io.PrintWriter@198dfaf   list 값 :[java.io.PrintWriter@198dfaf, java.io.PrintWriter@1a5ab41]
writer 값 :java.io.PrintWriter@1a5ab41 list 값 :[java.io.PrintWriter@198dfaf, java.io.PrintWriter@1a5ab41]

문자열로 전송하고 받을때는 문제가 없고 위의 전체 메세지 보내는 곳도 출력해 보니 똑같은 것 같은데...
혹시 채팅 프로그램 짜 보신 분 있으시면...
어느 부분을 확인해야 하는지 좀 알려주세요. 자바에 익숙하지도 않아서... 도움을 요청 합니다.