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

📄 broadcast.java

📁 java编写聊天室
💻 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 + -