毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

java聊天室源代码 第5页

更新时间:2008-11-28:  来源:毕业论文

 java聊天室源代码 第5页
import javax.swing.*;
import java.io.*;
import java.net.*;

/*
 * 服务器收发消息的类
 */
public class ServerReceive extends Thread {
 JTextArea textarea;
 JTextField textfield;
 JComboBox combobox;
 Node client;
 UserLinkList userLinkList;//用户链表
 
 public boolean isStop;
 
 public ServerReceive(JTextArea textarea,JTextField textfield,
  JComboBox combobox,Node client,UserLinkList userLinkList){

  this.textarea = textarea;
  this.textfield = textfield;
  this.client = client;
  this.userLinkList = userLinkList;
  this.combobox = combobox;
  
  isStop = false;
 }
 
 public void run(){
  //向所有人发送用户的列表
  sendUserList();
  
  while(!isStop && !client.socket.isClosed()){
   try{
    String type = (String)client.input.readObject();
    
    if(type.equalsIgnoreCase("聊天信息")){
     String toSomebody = (String)client.input.readObject();
     String status  = (String)client.input.readObject();
     String action  = (String)client.input.readObject();
     String message = (String)client.input.readObject();
     
     String msg = client.username
       +" "+ action
       + "对 "
       + toSomebody
       + " 说 : "
       + message
       + "\n";
     if(status.equalsIgnoreCase("悄悄话")){
      msg = " [悄悄话] " + msg;
     }
     textarea.append(msg);
     
     if(toSomebody.equalsIgnoreCase("所有人")){
      sendToAll(msg);//向所有人发送消息
     }
     else{
      try{
       client.output.writeObject("聊天信息");
       client.output.flush();
       client.output.writeObject(msg);
       client.output.flush();
      }
      catch (Exception e){
       //System.out.println("###"+e);
      }
      
      Node node = userLinkList.findUser(toSomebody);
      
      if(node != null){
       node.output.writeObject("聊天信息");
       node.output.flush();
       node.output.writeObject(msg);
       node.output.flush();
      }
     }
    }
    else if(type.equalsIgnoreCase("用户下线")){
     Node node = userLinkList.findUser(client.username);
     userLinkList.delUser(node);
     
     String msg = "用户 " + client.username + " 下线\n";
     int count = userLinkList.getCount();

     combobox.removeAllItems();
     combobox.addItem("所有人");
     int i = 0;
     while(i < count){
      node = userLinkList.findUser(i);
      if(node == null) {
       i ++;
       continue;
      }
   
      combobox.addItem(node.username);
      i++;
     }
     combobox.setSelectedIndex(0);

     textarea.append(msg);
     textfield.setText("在线用户" + userLinkList.getCount() + "人\n");
     
     sendToAll(msg);//向所有人发送消息
     sendUserList();//重新发送用户列表,刷新
     
     break;
    }
   }
   catch (Exception e){
    //System.out.println(e);
   }
  }
 }
 
 /*
  * 向所有人发送消息
  */
 public void sendToAll(String msg){
  int count = userLinkList.getCount();
  
  int i = 0;
  while(i < count){
   Node node = userLinkList.findUser(i);
   if(node == null) {
    i ++;
    continue;
   }
   
   try{
    node.output.writeObject("聊天信息");
    node.output.flush();
    node.output.writeObject(msg);
    node.output.flush();
   }
   catch (Exception e){
    //System.out.println(e);
   }
   
   i++;
  }
 }
 
 /*
  * 向所有人发送用户的列表
  */
 public void sendUserList(){
  String userlist = "";
  int count = userLinkList.getCount();

  int i = 0;
  while(i < count){
   Node node = userLinkList.findUser(i);
   if(node == null) {
    i ++;
    continue;
   }
   
   userlist += node.username;
   userlist += '\n';
   i++;
  }
  
  i = 0;
  while(i < count){
   Node node = userLinkList.findUser(i);
   if(node == null) {
    i ++;
    continue;
   }
   
   try{
    node.output.writeObject("用户列表");
    node.output.flush();
    node.output.writeObject(userlist);
    node.output.flush();
   }
   catch (Exception e){
    //System.out.println(e);
   }
   i++;
  }
 }
}

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

java聊天室源代码 第5页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。