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

📄 chatserver.java

📁 Java编写的GUI聊天工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					String m_RemoveRFC="REMO "+m_RemoveUserName;
																 
					/*****Send a REMO RFC to all other Users****/
					for(int m_ILoop = 0; m_ILoop < m_userListSize; m_ILoop++)
					{
						clientobject = 	(ClientObject) userarraylist.get(m_ILoop);
						if(clientobject.getRoomName().equals(m_RemoveRoomName))
							SendMessageToClient(clientobject.getSocket(),m_RemoveRFC);
					}
					return;	
				}	
			}
	}
		
	/*********Function To Change the Room *****************/
	public void ChangeRoom(Socket ClientSocket,String UserName, String NewRoomName)
	{
		int m_clientIndex = GetIndexOf(UserName);		
		if(m_clientIndex >= 0)
		{
			/********Update the Old Room to New Room and send the RFC**********/
			ClientObject TempClientObject = (ClientObject) userarraylist.get(m_clientIndex);
			String m_oldRoomName = TempClientObject.getRoomName();
			TempClientObject.setRoomName(NewRoomName);
			userarraylist.set(m_clientIndex,TempClientObject);
			SendMessageToClient(ClientSocket,"CHRO "+NewRoomName);
			
			/****Send all the Users list of that particular room to that client socket****/
			int m_userListSize = userarraylist.size();
			StringBuffer stringbuffer = new StringBuffer("LIST ");			
			for(G_ILoop = 0; G_ILoop < m_userListSize; G_ILoop++)
			{
				clientobject = (ClientObject) userarraylist.get(G_ILoop);				
				/***Check the Room Name*****/
				if(clientobject.getRoomName().equals(NewRoomName))
				{					
					stringbuffer.append(clientobject.getUserName());
					stringbuffer.append(";");									
				}
			}
			SendMessageToClient(ClientSocket,stringbuffer.toString());
			
			
			/**********Inform to Old Room and New Room Users**********/			
			String m_OldRoomRFC = "LERO "+UserName+"~"+NewRoomName;
			String m_NewRoomRFC = "JORO "+UserName;
			for(G_ILoop = 0; G_ILoop < m_userListSize; G_ILoop++)
			{
				clientobject = (ClientObject) userarraylist.get(G_ILoop);
				if(clientobject.getRoomName().equals(m_oldRoomName))
					SendMessageToClient(clientobject.getSocket(),m_OldRoomRFC);
				if((clientobject.getRoomName().equals(NewRoomName)) && (!(clientobject.getUserName().equals(UserName))))
					SendMessageToClient(clientobject.getSocket(),m_NewRoomRFC);
			} 			
		}
		
		
	}
	
	/********Function to Send General Message ***************/
	protected void SendGeneralMessage(Socket ClientSocket, String Message,String UserName,String RoomName)
	{
		boolean m_floodFlag = false;
		messagearraylist.add(UserName);		
		if(messagearraylist.size() > MAX_MESSAGE)
		{
			messagearraylist.remove(0);
			messagearraylist.trimToSize();
			
			/*********Chk Whether the User is flooding the message*********/
			String m_firstMessage = (String) messagearraylist.get(0);
			int m_messageListSize = messagearraylist.size();			
			for(G_ILoop = 1; G_ILoop < 	m_messageListSize; G_ILoop++)
			{
				if(messagearraylist.get(G_ILoop).equals(m_firstMessage))
				{
						m_floodFlag = true;
				}
				else
				{
						m_floodFlag = false;
						break;
				}	
			}						
		}
		
		/********Sending a General Message to All the Users*******/
		int m_userListSize = userarraylist.size();
		String m_messageRFC = "MESS "+UserName+":"+Message;
		for(G_ILoop = 0; G_ILoop < m_userListSize; G_ILoop++)
		{
			clientobject = (ClientObject) userarraylist.get(G_ILoop);
			if((clientobject.getRoomName().equals(RoomName)) && (!(clientobject.getUserName().equals(UserName))))
			{				
				SendMessageToClient(clientobject.getSocket(),m_messageRFC);	
			}	
		}
		
		/********Kick Off the User If he/she flooding the message********/
		if(m_floodFlag)
		{
			SendMessageToClient(ClientSocket,"KICK ");
			messagearraylist.clear();		
		}
				
	}
	
	/*************Function To Send Private Message *************/
	protected void SendPrivateMessage(String Message , String ToUserName)
	{		
		clientobject = GetClientObject(ToUserName);
		if(clientobject != null)
		{
			SendMessageToClient(clientobject.getSocket(),"PRIV "+Message);	
		}
			
	}
	
		/*************Function To Request User For Voice Chat *************/
	protected void RequestForVoiceChat(Socket ClientSocket,String FromUserName,String ToUserName)
	{		
		clientobject = GetClientObject(ToUserName);
		if(clientobject != null)
		{
			SendMessageToClient(clientobject.getSocket(),"REQU "+ GetClientObject(FromUserName).getSocket().getInetAddress().getHostAddress() + "~" + FromUserName);	
		}
			
	}
	
	/*************Function To Quit Voice Chat *************/
	protected void QuitVoiceChat(String FromUserName,String ToUserName)
	{		
		System.out.println(FromUserName + "-->" + ToUserName);
		clientobject = GetClientObject(ToUserName);
		if(clientobject != null)
		{
			SendMessageToClient(clientobject.getSocket(),"QVCT "+ FromUserName + "~" + ToUserName);	
		}
			
	}
	
	/*************Function To Send User IP For Voice Chat *************/
	protected void SendUserIP(Socket ClientSocket,String FromUserName,String ToUserName)
	{		
		
		clientobject = GetClientObject(ToUserName);
		if(ClientSocket != null)
		{
			SendMessageToClient(clientobject.getSocket(),"ADDR "+ GetClientObject(FromUserName).getSocket().getInetAddress().getHostAddress() + "~" + FromUserName);	
		}
	
	}
	
		/*************Function To Reject The Request For Voice Chat *************/
	protected void RejectCall(String FromUserName,String ToUserName)
	{		
		clientobject = GetClientObject(ToUserName);
		if(clientobject != null)
		{
			SendMessageToClient(clientobject.getSocket(),"REJC "+ FromUserName + "~" + ToUserName);	
		}
			
	}
	
	/***********Function to Get Remote User Address ******************/
	protected void GetRemoteUserAddress(Socket ClientSocket,String ToUserName, String FromUserName)
	{
		clientobject = GetClientObject(ToUserName);
		if(clientobject != null)
		{			
			SendMessageToClient(clientobject.getSocket(),"REIP "+ FromUserName +"~"+ClientSocket.getInetAddress().getHostAddress());			
		}
			
	}
	
	/***********Function to Get Remote User Address ******************/
	protected void SendRemoteUserAddress(Socket ClientSocket,String ToUserName, String FromUserName)
	{
		clientobject = GetClientObject(FromUserName);		
		if(clientobject != null)
		{			
			SendMessageToClient(clientobject.getSocket(),"AEIP "+ ToUserName +"~"+ClientSocket.getInetAddress().getHostAddress());						
		}			
	}
	
	/***********Function to Quit Video Chat ******************/
	protected void QuitVideoChat(String ToUserName)
	{
		clientobject = GetClientObject(ToUserName);	
		if(clientobject != null)
		{			
			SendMessageToClient(clientobject.getSocket(),"QUVC");						
		}
	}	
				
	/*********Function to get the User Count in the Room***********/
	protected void GetUserCount(Socket ClientSocket,String RoomName)
	{
		int m_userListSize = userarraylist.size();
		int m_userCount = 0;
		for(G_ILoop = 0; G_ILoop < m_userListSize; G_ILoop++)
		{
			clientobject = (ClientObject) userarraylist.get(G_ILoop);
			if(clientobject.getRoomName().equals(RoomName))
				m_userCount++;	
		}
		
		SendMessageToClient(ClientSocket,"ROCO "+RoomName+"~"+m_userCount);
	}
	
	/***********Function to Destroy the Objects***********/
	private void ExitServer()
	{
		if(thread != null)
		{
			thread.stop();
			thread = null;
		}
		try {
			if(serversocket != null)
			{				
				serversocket.close();
				serversocket = null;
			}
		}catch(IOException _IOExc) { }		
		userarraylist = null;
		messagearraylist = null;
		cmdStop.setEnabled(false);
		cmdStart.setEnabled(true);
	}
	
	/*********Loading Properties File*******************/
	private	Properties	GetDBProperties()
	{
		/******************  Getting the Property Value From Propeyty File ************************/
		Properties	DBProperties = new Properties();	
		try
		{			
			InputStream	inputstream = this.getClass().getClassLoader().getResourceAsStream("server.properties");
			DBProperties.load(inputstream);
			inputstream.close();
		}
		catch (IOException _IOExc){ }
		finally
		{
			return (DBProperties);
		}
	}
	
	public static void main(String[] args) {		
		ChatServer mainFrame = new ChatServer();				
		mainFrame.setVisible(true);
	}
	
	/********Global Variable Declarations***********/
	Properties DBProperties;
	Button cmdStart,cmdStop;
	ServerSocket serversocket;
	Socket socket;
	ArrayList userarraylist,messagearraylist;
	Thread thread;
	ChatCommunication chatcommunication;	
	DataOutputStream dataoutputstream;
	int G_ILoop;
	ClientObject clientobject;
	String RoomList;	
}

⌨️ 快捷键说明

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