?? broadcastthread.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 + -