📄 broadcast.java
字号:
import java.net.*;
import java.util.StringTokenizer;
import java.io.*;
public class BroadCast extends Thread{
ServerThread sThread;
ClientThread cThread;
String m,name;
StringTokenizer st;
String keyword;
public BroadCast(ServerThread sThread){
this.sThread=sThread;
}
public void run(){
while(true){
try{
Thread.sleep(3000);//每3秒广播一次
}
catch(InterruptedException e){
}
synchronized(sThread.messages){
if(sThread.messages.isEmpty())//检查有无消息
continue;
m=(String)sThread.messages.firstElement();//取出消息队列中的第一条记录,准备发送
sThread.messages.removeElement(m);//删除该消息,为取下一条记录准备
st=new StringTokenizer(m,":");
keyword=st.nextToken();//通信关键字
name=st.nextToken();//客户呢称
}
synchronized(sThread.Clients){
if(keyword.equals("PUBLIC"))//比较群聊关键字
{
//信息内容
m="来自"+name+":"+"\n=>"+m.substring(keyword.length()+name.length()+2)+"\n";
//对每一个客户端发送信息
for(int i=0;i<sThread.Clients.size();i++){
cThread=(ClientThread)sThread.Clients.elementAt(i);
cThread.write.print(m);
}
}
else if(keyword.equals("PRIVATE"))//比较私聊关键字
{
String OtherName;
OtherName=st.nextToken();//私聊对象的呢称
//OtherName="lj";
m="来自"+name+"悄悄对你说:"+"\n=>"+m.substring(keyword.length()+name.length()+OtherName.length()+3)+"\n";
SingleSend(m,OtherName);//私聊功能
}
}
/*synchronized(sThread.username)//刷新客户端用户列表
{
StringBuffer people=new StringBuffer("PEOPLE:");
for(int j=0;j<sThread.username.size();j++){
people.append((String)sThread.username.elementAt(j)+":");
}
for(int i=0;i<sThread.Clients.size();i++){
cThread=(ClientThread)sThread.Clients.elementAt(i);
cThread.write.print(people);
}
}*/
}
}
/*public void SingleSend(String message,String othername){//私聊功能
int i=0;
String s,m;
cThread=(ClientThread)sThread.Clients.elementAt(i);
s=cThread.Name;
m=message;
while(i<sThread.Clients.size()){
if(!s.equals(othername)) //比较通信对方呢称
{
i++;
cThread=(ClientThread)sThread.Clients.elementAt(i);
s=cThread.Name;
continue;
};
}
//对指定客户端发送信息
cThread=(ClientThread)sThread.Clients.elementAt(i);
cThread.write.print(m);
}*/
public void SingleSend(String m,String othername)
{
int i;
String u;
for(i=0;i<sThread.username.size();i++)
{
u=(String)sThread.username.elementAt(i);
if(!u.equals(othername))
{
continue;
}
else
break;
}
cThread=(ClientThread)sThread.Clients.elementAt(i);
cThread.write.print(m);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -