源代码:
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
class State{
private String name;
private int mystate;
public State()
{
}
public void setName(String name)
{
this.name = name;
}
public void setMystate(int mystate)
{
this.mystate = mystate;
}
public String getName()
{
return name;
}
public int getMystate()
{
return mystate;
}
}
public class ChatServer {
public static void main(String args[]) {
Hashtable<String,DataOutputStream> userList = new Hashtable<String,DataOutputStream>();
String name;
DataInputStream dis;
DataOutputStream dos;
try{
ServerSocket ss = new ServerSocket(9999);
while(true){
Socket s = ss.accept();
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
name = dis.readUTF();
userList.put(name,dos);
new MyServerReader(name,dis,userList).start();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
class MyServerReader extends Thread{
private String name;
private DataInputStream dis;
private Hashtable<String,DataOutputStream> userList;
private State all[] = new State[160];
public MyServerReader(String name,DataInputStream dis,Hashtable<String,DataOutputStream> userList ){
this.name = name;
this.dis = dis;
this.userList = userList;
for(int i=0;i<160;i++)
{
all[i] = new State();
all[i].setName(String.valueOf(name));
all[i].setMystate(0);
}
}
public void run(){
String info;
for(int i=0;i<160;i++)
{
if(all[i].getMystate() == 0)
{
all[i].setMystate(1);
transmitTitle("\n\t┌──────────────────────┐","");
transmitTitle("\t│ │","");
transmitTitle("\t│ 欢迎使用xxxx留言系统! │","");
transmitTitle("\t│ │","");
transmitTitle("\t└──────────────────────┘\n\n\n","");
}
}
try{
transmitMessageSystem(name + " 进入系统!","--系统消息--");
while(true){
info = dis.readUTF();
if(info.equals("bye")){
DataOutputStream dos = (DataOutputStream)(userList.get(name));
Thread.sleep(1000);
dos.close();
dis.close();
userList.remove(name);
transmitMessageSystem(name + " 退出系统!","--系统消息--");
break;
}else if(info.length()>0){
transmitMessage(info,name);
}
}
}catch (Exception e) {
}
}
public void transmitMessageSystem(String msg,String name){
Collection doses = userList.values();
DataOutputStream dos;
for(Object o: doses){
dos = (DataOutputStream)o;
try{
dos.writeUTF(name + "(" + getTime() +") :" + msg);
}catch(Exception e){
}
}
}
public void transmitTitle(String msg,String name){
Collection doses = userList.values();
DataOutputStream dos;
for(Object o: doses){
dos = (DataOutputStream)o;
try{
dos.writeUTF(name + msg);
}catch(Exception e){
}
}
}
public void transmitMessage(String msg,String name){
Collection doses = userList.values();
DataOutputStream dos;
for(Object o: doses){
dos = (DataOutputStream)o;
try{
dos.writeUTF(name + "(" + getTime() + ") 说:\n" + msg);
}catch(Exception e){
}
}
}
private String getTime()
{
Calendar c = Calendar.getInstance();
int yea = c.get(Calendar.YEAR);
int mon = c.get(Calendar.MONTH) + 1;
int dat = c.get(Calendar.DATE);
int hou = c.get(Calendar.HOUR_OF_DAY);
int min = c.get(Calendar.MINUTE);
int sec = c.get(Calendar.SECOND);
String time = yea + "-" +
(mon-10<0?"0"+mon:mon) + "-" +
(dat-10<0?"0"+dat:dat) + " " +
(hou-10<0?"0"+hou:hou) + ":" +
(min-10<0?"0"+min:min) + ":" +
(sec-10<0?"0"+sec:sec) + " ";
return time;
}
}
编译结果是:
--------------------配置: <默认>--------------------
e:\desktop\chapter17\17-07\ChatServer.java:68: 无法实例化枚举类型
all[i] = new State();
^
e:\desktop\chapter17\17-07\ChatServer.java:69: 找不到符号
符号: 方法 setName(java.lang.String)
位置: 类 java.lang.Thread.State
all[i].setName(String.valueOf(name));
^
e:\desktop\chapter17\17-07\ChatServer.java:70: 找不到符号
符号: 方法 setMystate(int)
位置: 类 java.lang.Thread.State
all[i].setMystate(0);
^
e:\desktop\chapter17\17-07\ChatServer.java:77: 找不到符号
符号: 方法 getMystate()
位置: 类 java.lang.Thread.State
if(all[i].getMystate() == 0)
^
e:\desktop\chapter17\17-07\ChatServer.java:79: 找不到符号
符号: 方法 setMystate(int)
位置: 类 java.lang.Thread.State
all[i].setMystate(1);
^
5 错误