package chat;
import java.net.*;
import java.io.*;
import javax.swing.*;
//import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class ChatServer extends Applet implements Runnable{
//Container cont = this.getContentPane();
JButton buttonSendMessage = new JButton("Send Message");
JTextField textField = new JTextField();
JTextArea textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane();
ServerSocket s = null;
Socket con = null;
ObjectOutputStream output = null;
ObjectInputStream input = null;
/**
*
*/
public void init(){
//this.setTitle("IM Server");
this.setLayout(null);
textField.setBounds(20, 20, 200, 30);
textArea.setBounds(20, 70, 300, 150);
textArea.setEditable(false);
textArea.setLineWrap(true);
scrollPane.setBounds(20, 70, 300, 150);
buttonSendMessage.setBounds(250, 20, 120, 30);
buttonSendMessage.addActionListener(new buttonSendMessage_ActionListener());
buttonSendMessage.setEnabled(false);
this.add(buttonSendMessage,null);
this.add(textField,null);
this.add(textArea,null);
this.add(scrollPane,null);
scrollPane.getViewport().add(textArea);
//this.setSize(400,300);
//this.setVisible(true);
new Thread(this).start();
}
public void run(){
try{
s = new ServerSocket(8000);
textArea.insert("服务器启动成功!\n",textArea.getText().length());
textArea.insert("等待应答...\n",textArea.getText().length());
//线程中断,监听客户端应答
con = s.accept();
textArea.insert("连接成功!\n",textArea.getText().length());
buttonSendMessage.setEnabled(true);
output = new ObjectOutputStream(con.getOutputStream());
input = new ObjectInputStream(con.getInputStream());
output.writeObject("<Server said:>\n");
output.flush();
output.writeObject("Hello!\n");
output.flush();
String msg = (String)input.readObject();
while(!msg.equals("quit")){
textArea.insert(msg,textArea.getText().length());
textArea.moveCaretPosition(textArea.getText().length());
msg = (String)input.readObject();
}
output.close();
input.close();
con.close();
}catch(Exception e){
System.out.println(e);
}
}
public void SendMessage(){
String str = textField.getText();
textArea.insert("<Server said:>\n",textArea.getText().length());
textArea.insert(str+"\n",textArea.getText().length());
textField.setText("");
textArea.moveCaretPosition(textArea.getText().length());
try{
output.writeObject("<Server said:>\n");
output.flush();
output.writeObject(str+"\n");
output.flush();
}catch(Exception e){
System.out.println(e);
}
}
class buttonSendMessage_ActionListener implements ActionListener{
public void actionPerformed(ActionEvent e){
SendMessage();
}
}
/*
public static void main(String args[]){
ChatServer cs = new ChatServer();
cs.connect();
}
*/
}