public void actionPerformed(ActionEvent evt) { helpMenuItemActionPerformed(evt); } });
helpMenu.add(helpMenuItem);
aboutMenuItem.setForeground(new Color(255, 255, 255)); aboutMenuItem.setFont(new Font(\宋体\ aboutMenuItem.setText(\关于\
aboutMenuItem.setBackground(new Color(0, 0, 0)); aboutMenuItem.setBorder(null);
aboutMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { aboutMenuItemActionPerformed(evt); } });
helpMenu.add(aboutMenuItem);
menuBar.add(helpMenu);
setJMenuBar(menuBar);
pack(); }
public static void main(String args[]) //主函数 {
new Server().show(); }
class connection extends Thread {
private User fromUserMessage=new User(); private User toUserMessage=new User(); private Socket netUser;
private ObjectInputStream streamFromUser; private ObjectOutputStream streamToUser; private boolean existName,existPassword;
private String onlineNumber=\判断在线人数的变化
public connection(Socket UserSocket) {
netUser=UserSocket; try {
streamFromUser = ObjectInputStream(netUser.getInputStream()); streamToUser = ObjectOutputStream(netUser.getOutputStream());
第 15 页 共 69 页
15
new new
}
catch(IOException e) {
try {
netUser.close(); }
catch(IOException e1) {
System.out.print(\ return; } }
this.start(); }
public boolean validateName(String name) {
boolean validate;
String recode,message; RandomAccessFile logfile; FileInputStream fsread; InputStreamReader inputread; BufferedReader bfread; validate=false; try
{
fsread=new FileInputStream(\ inputread=new InputStreamReader(fsread); bfread=new BufferedReader(inputread);
while((recode=bfread.readLine()) != null)//验证用户信息 {
StringTokenizer st = new StringTokenizer(recode,\ while (st.hasMoreTokens()) {
message=st.nextToken(); if(message.equals(name)) {
validate=true; break;
} break;
} } }
catch(FileNotFoundException e) {
System.out.println(\ }
catch(IOException e) {
16
第 16 页 共 69 页
System.out.println(\ }
return validate; }
public boolean validatePassword(String password) {
boolean validate;
String recode,message; RandomAccessFile logfile; FileInputStream fsread; InputStreamReader inputread; BufferedReader bfread; validate=false; try
{
fsread=new FileInputStream(\ inputread=new InputStreamReader(fsread); bfread=new BufferedReader(inputread);
while((recode=bfread.readLine()) != null)//验证用户信息 {
StringTokenizer st = new StringTokenizer(recode,\ while (st.hasMoreTokens()) {
message=st.nextToken(); message=st.nextToken();
if(message.equals(password)) {
validate=true; break;
} break; } } }
catch(FileNotFoundException e) {
System.out.println(\ }
catch(IOException e) {
System.out.println(\ }
return validate; }
public void run() {
try
{
17
第 17 页 共 69 页
for(;;) {
String ButtonMessage;
fromUserMessage=(User)streamFromUser.readObject();//读用户信息
ButtonMessage=fromUserMessage.Command; //读按钮信息
existName=validateName(fromUserMessage.UserName); //验证用户名
existPassword=validatePassword(fromUserMessage.UserPassword);//验证用户密码
if(ButtonMessage.equals(\ {
Login(); }
if(ButtonMessage.equals(\ {
Enter(); }
if(ButtonMessage.equals(\ {
Leave(); }
if(!onlineNumber.equals(\ {
Updating(fromUserMessage.UserName);
}
if(ButtonMessage.equals(\|| ButtonMessage.equals(\ {
Message(); }
if(ButtonMessage.equals(\|| ButtonMessage.equals(\ {
toSinkMessage(); }
if(ButtonMessage.equals(\|| ButtonMessage.equals(\ {
toUserMessage();
} } }
catch(IOException e){}
catch(ClassNotFoundException e){} try {
streamFromUser.close();
第 18 页 共 69 页
18
streamToUser.close(); netUser.close(); }
catch(IOException e){} }
public void Login()//注册请求处理 {
try {
if(existName) {
toUserMessage.Command=\
streamToUser.writeObject((User)toUserMessage); //返回操作信息
streamToUser.flush();
} else {
//加入新用户信息 RandomAccessFile UserObj=new RandomAccessFile(\
UserObj.seek(UserObj.length());
UserObj.writeBytes(fromUserMessage.UserName+\\
+fromUserMessage.UserHeadPhoto+\age.UserAge+\
onlineNumber=\
toUserMessage.Command=\
toUserMessage.UserName=fromUserMessage.UserName;
toUserMessage.Message=\系统消息:大家欢迎\加入我们的DaoDao聊天室!!!\
Server.vectorUserList.addElement(fromUserMessage.UserName);//加入用户到用户在线列表
toUserMessage.vectorUserList=Server.vectorUserList;
streamToUser.writeObject((User)toUserMessage);//返回用户在线列表和操作信息
streamToUser.flush();
Server.vectorStreamToUser.addElement(streamToUser);//存储该对象的输出流
jLabel5.setText(\共有:\个客户在线\服务器刷新
jList1.setListData(Server.vectorUserList);
第 19 页 共 69 页
19