import java.awt.BorderLayout;

import java.awt.event.*;

import java.io.*;

import java.net.*;

import java.util.ArrayList;


import javax.swing.*;


public class ChatServer extends JFrame implements ActionListener {

BufferedReader in = null;

BufferedWriter out = null;

ServerSocket listener = null;

Socket socket = null;

JTextField serverMessage;

JScrollPane spane;

Receiver clientMessage;

Thread thread;

public ChatServer() {

setTitle("서버 채팅 창");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(new BorderLayout());

clientMessage = new Receiver();

clientMessage.setEditable(false);

serverMessage = new JTextField();

serverMessage.addActionListener(this);

spane = new JScrollPane(clientMessage);

add(spane,BorderLayout.CENTER);

add(serverMessage,BorderLayout.SOUTH);

setSize(400, 200);

setVisible(true);

try {

setupConnection();

} catch (IOException e) {

handleError(e.getMessage());

}

Thread th = new Thread(clientMessage);

th.start();


}

private void setupConnection() throws IOException {

listener = new ServerSocket(9999); 

socket = listener.accept(); 

//thread = new PerClientThread(socket);

//thread.start();

System.out.println("연결됨");

out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

}

public static void main(String[] args) {

ChatServer frame = new ChatServer();

}


private static void handleError(String string) {

System.out.println(string);

System.exit(1);

}

private class Receiver extends JTextArea implements Runnable {

@Override

public void run() {

String inputMessage=null;

while (true) {

try {

inputMessage = in.readLine();

this.setText(inputMessage);

if(inputMessage.equalsIgnoreCase("bye")){

break;

}

} catch (IOException e) {

handleError(e.getMessage());

}finally

{

try {

socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}


@Override

public void actionPerformed(ActionEvent e) {

if (e.getSource() == serverMessage) {

String outputMessage = serverMessage.getText();

try {

out.write(outputMessage);

out.flush();

clientMessage.setText(outputMessage);

} catch (IOException e1) {

handleError(e1.getMessage());

}

}

}


import java.awt.BorderLayout;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import javax.swing.*;

public class ChatClient extends JFrame implements ActionListener {
BufferedReader in = null;
BufferedWriter out = null;
Socket socket = null;
Receiver serverMessage;
JTextField clientMessage;
JScrollPane spane;
public ChatClient() {
setTitle("클라이언트 채팅 창");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
serverMessage = new Receiver();
serverMessage.setEditable(false);
clientMessage = new JTextField();
clientMessage.addActionListener(this);
spane = new JScrollPane(serverMessage);
add(spane,BorderLayout.CENTER);
add(clientMessage,BorderLayout.SOUTH);
setSize(400, 200);
setVisible(true);
try {
setupCdonnection();
} catch (IOException e) {
handleError(e.getMessage());
}
Thread th = new Thread(serverMessage);
th.start();

}
private void setupCdonnection() throws IOException {
socket = new Socket("localhost", 9999);
System.out.println("연결됨");
in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 
}
public static void main(String[] args) {
ChatClient frame = new ChatClient();
}

private static void handleError(String string) {
System.out.println(string);
System.exit(1);
}
private class Receiver extends JTextArea implements Runnable {
@Override
public void run() {
String inputMessage=null;
while (true) {
try {
inputMessage = in.readLine();
this.setText(inputMessage);
if(inputMessage.equals("bye"))
{
break;
}
} catch (IOException e) {
e.printStackTrace();
}finally
{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == clientMessage) {
String outputMessage = clientMessage.getText();
try {
out.write(outputMessage);
out.flush();
serverMessage.setText(outputMessage);

} catch (IOException e1) {
handleError(e1.getMessage());
}
}
}

다중채팅 프로그램 작성중인데 클라이언트에 입력을해도 서버 텍스트에리어에 표시가 안됨 반대도 마찬가지구...
in,out스트림이 안먹히는거같은데 ㅠㅠㅠ 
방법좀