Performed
});//end
msgA.addKeyListener(new KeyAdapter(){//键盘监听器---按下Enter发送信息
public void keyPressed(KeyEvent e){
int value = e.getKeyCode();
if(value == KeyEvent.VK_ENTER){
String msg = msgA.getText();
Calendar ca = new GregorianCalendar();
int hh = ca.get(Calendar.HOUR_OF_DAY);
int mm = ca.get(Calendar.MINUTE);
int ss = ca.get(Calendar.SECOND);
String time = new String(hh + ":" + mm + ":" + ss + " ");
broadcast(time + "[系统消息]: " + msg);//那么广播这条系统消息
area.append(time + "[系统消息]: " + msg + "\n");
msgA.setText("");
}
}
});
}//end of init()
class Start extends Thread //启动服务器的线程
{
public void run() {
try {
if(server != null &;&; !server.isClosed()){
area.append("警告!服务器已在启动中!\n");
}
else{
server = new ServerSocket(Integer.parseInt(portT.getText()));//启动服务器
area.append((new Date()).toString() +'\n'+ "[恭喜!^_^]"+"服务器启动成功!" + "\n\n");
}
while(true){
client = server.accept();
Thread sgS = new SgService(client);//为每位登录的客户创建一个线程
sgS.start();//启动客户线程
}
}
catch (Exception e) {
System.out.println("cuowu 1");
e.printStackTrace();
}
}//end of run()
} //end of Start
//处理单个客户的线程
class SgService extends Thread//SgService---begin
{
private Socket client = null;//客户套接字
private BufferedReader br = null;
//输入流
private PrintStream ps = null;
private int counter = 0;//记录是第几次接受用户的信息
private int mark = 0;//记录用户说不文明用语的次数
private String name = null;
SgService(Socket client) {//构造方法
this.client = client;
public void run() {//run()----begin
try {
br = new BufferedReader(new InputStreamReader(client.getInputStream()));
ps = new PrintStream(client.getOutputStream());
String msg = null;
while ((msg = br.readLine()) != null) {//无限循环,意味着可以和客户进行无限次交互
if(counter == 0){
name = msg;
container.put(name,client);
list.add(name + "----" + client.getInetAddress().getHostAddress());
Calendar ca = new GregorianCalendar();
int hh = ca.get(Calendar.HOUR_OF_DAY);
int mm = ca.get(Calendar.MINUTE);
int ss = ca.get(Calendar.SECOND);
String time = hh + ":" + mm + ":" + ss + " ";
broadcast(time + name + "上线了!");
area.append(time + name + "上线了!\n\n");