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());
}
}
}
}
댓글 0