📄 chatserver.java
字号:
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 + -