⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 broadcastthread.java

📁 用java socket技术实现多人聊天室
💻 JAVA
字号:
package chatserver2;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

class BroadcastThread extends Thread{//广播线程
	 ChatRoomServer chatFrame2;
	 java.util.Vector chatClients;//连接线程信息
	 java.util.Vector msgStack;//信息栈
	 java.util.Vector clientMsg;//记录客户发送的信息
	 CommunicateThread comThread1;
	 CommunicateThread comThread2;
	 String string;//information in inforStack
	 String clientName;//client thread name
	 String broadcastInfor;//broadcast information=clientName+string;
	 
	 public BroadcastThread(ChatRoomServer cFrame){
	  chatFrame2=cFrame;
	  chatClients=chatFrame2.clients;
	  clientMsg=chatFrame2.clientsInfor;
	  //this.start();
	 }
	 
	 public void broadcast(String str){//广播  
	  for(int k=0;k<chatClients.size();k++){//send to everyone分别调用每个连接线程,发送信息 
	   comThread2=(CommunicateThread)chatClients.get(k);
	   comThread2.sendInformation(str);
	  }
	 }
	 
	 public void run(){
	  try{
	   while(true){
	    for(int i=0;i<chatClients.size();i++){
	     comThread1=(CommunicateThread)chatClients.get(i);
	     msgStack=comThread1.inforStack;//得到每个连接的信息栈
	     clientName=(String)clientMsg.get(i);//客户名 
	     //读取每个连接线程的信息栈并把信息发送出去
	     for(int j=0;j<msgStack.size();j++){
	      string=(String)msgStack.get(j);
	      broadcastInfor=clientName+"->"+string;
	      broadcast(broadcastInfor);
	     }
	     //clear the inforStack
	     msgStack.removeAllElements();//清除以发送的信息
	     
	    }
	    try{
	     Thread.sleep(100);//version2
	    }catch(InterruptedException ex){}
	   }
	  }catch(Exception e){}
	 }
	 
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -