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

📄 dialogueserver.java

📁 使用Java实现的聊天室
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.net.*;
import java.io.*;
import java.util.Vector;
class Server{
	 private final int DEFAULT_PORT=4700;
	 private final int MAX_NUMBER=100;
     private Vector userList;
     private Vector chatroomList;
	public static void main(String args[])
	{
		Server server=new Server();
		server.go();
	}
	public void go()
	{
		boolean listening=true;
		ServerSocket serverSocket=null;
		userList=new Vector(MAX_NUMBER);
		chatroomList=new Vector(MAX_NUMBER);
		try
		{
			serverSocket=new ServerSocket(DEFAULT_PORT);
		}
		catch(IOException e)
		{
			System.out.println("Could not listen on port:"+DEFAULT_PORT+","+e);
			System.exit(1);
		}
		System.out.println("Listening on port:"+DEFAULT_PORT);
		while(listening)
		{
			User user=new User();
			userList.add(user);
			try
			{
    		new DialogueMultiServerThread(serverSocket.accept(),userList,user,chatroomList).start();
    	}catch(IOException e)
    	{}
                
    }
    try{
                 serverSocket.close();
              }catch(IOException e)
              {}
	}
}

class DialogueMultiServerThread extends Thread
{
	Socket socket=null;
	Vector userList;
	User user,tempUser;
	Vector chatroomList;
	boolean loginSuccess=true;
	DialogueMultiServerThread(Socket socket,Vector userList,User user,Vector chatroomList)
	{
		this.socket=socket;
        this.user=user;
        this.userList=userList;
        this.user.setSocket(this.socket);
        this.chatroomList=chatroomList;
        tempUser=new User();
    }

	public void run()
	{
		if(socket==null)
		return;

		while(true)
		{

			try
			{
				
				DataInputStream is=new DataInputStream(
					new BufferedInputStream(socket.getInputStream()));
				PrintStream os=new PrintStream(
					new BufferedOutputStream(socket.getOutputStream(),1024),false);
				//DialogueProtocol dgp=new DialogueProtocol();
				String inputLine,outputLine;
				do
				{
					loginSuccess=true;
				
				inputLine=is.readLine();
				for(int i=0;i<userList.size()-1;i++)
				{
					tempUser=(User)userList.get(i);
					if(tempUser.getUserID()!=null&&tempUser.getUserID().equalsIgnoreCase(inputLine))
					{
						loginSuccess=false;
						break;
					}
				}
				if(!loginSuccess)
				{
					os.println("loginrefuse");
					os.flush();
				outputLine="There has been a same user's ID.";
				os.println(outputLine);
				os.flush();
			}
			}while(!loginSuccess);
				user.setUserID(inputLine);
				//outputLine=dgp.processInput(null,inputLine);
				os.println("loginOK");
				os.flush();
	            sendServerList();
	            
	            	
				while((inputLine=is.readLine())!=null)
				{
					String to="to ";
					String kick="kick ";
					String remove="remove";
					String chatwith="chatwith ";
					int number=inputLine.indexOf((int)':');
					if(inputLine.length()>5&&inputLine.substring(0,5).equalsIgnoreCase("creat")&&user.getCurrentChatroom()==null)
	                {
	                   boolean creatSuccess=true;
	                   Chatroom croom=new Chatroom();
	                   for(int i=0;i<chatroomList.size();i++)
	                   {
	                   	   croom=(Chatroom)chatroomList.get(i);
	                   	   if(croom.getName().equalsIgnoreCase(inputLine.substring(6)))
	                   	   {
	                   	   	     creatSuccess=false;
	                   	   	     break;
	                   	   }
	                   	}
	                   	if(creatSuccess)
	                   	{
	            	   Chatroom chatroom=new Chatroom(inputLine.substring(6),user.getUserID());
	            	   chatroomList.add(chatroom);
	            	   user.setIsAdministrator(true);
	            	   user.setCurrentChatroom(inputLine.substring(6));
	            	   os.println("creatOK");
	            	   os.flush();
	            	}
	            	else {
	            		os.println("creatrefuse");
	            		os.flush();
	            		os.println("There has been a same chatroom.");
	            		os.flush();
	            	}
	            	
	                }
	                else
	                { 
	                   if(inputLine.length()>4&&inputLine.substring(0,4).equalsIgnoreCase("join")&&user.getCurrentChatroom()==null)
	                   {
	            	      user.setCurrentChatroom(inputLine.substring(5));
	            	      //user.setIsAdministrator(false);
	                      for(int i=0;i<userList.size()-1;i++)
					      {
						      tempUser=(User)userList.get(i);
						      if(tempUser.getCurrentChatroom()!=null&&tempUser.getCurrentChatroom().equalsIgnoreCase(user.getCurrentChatroom())&&!tempUser.getUserID().equalsIgnoreCase(user.getUserID()))
						      {
						         PrintStream clientos=new PrintStream(new BufferedOutputStream(tempUser.getSocket().getOutputStream(),1024),false);
						         clientos.println("<"+user.getUserID()+">I'm coming");
						         clientos.flush();
						         
					          }
					      }
	                   }
				       else
				       {
						  if(inputLine.regionMatches(true,0,to,0,3))
				          {
						     String toName=inputLine.substring(3,number);
						     boolean success=false;
						     for(int i=0;i<userList.size()-1;i++)
						     {
							   tempUser=(User)userList.get(i);
							   if(tempUser.getChatter()!=null&&tempUser.getUserID().equalsIgnoreCase(toName)&&tempUser.getChatter().equalsIgnoreCase(user.getUserID()))
							   {
								  PrintStream clientos=new PrintStream(new BufferedOutputStream(tempUser.getSocket().getOutputStream(),1024),false);
								  clientos.println("<from "+user.getUserID()+">"+inputLine.substring(number+1));
								  clientos.flush();
							      clientos=new PrintStream(new BufferedOutputStream(user.getSocket().getOutputStream(),1024),false);
						          clientos.println("<to "+toName+">"+inputLine.substring(number+1));
						          clientos.flush();
						          success=true;
						          break;
						       }
						    }
						    if(!success)
						    {
						    	  PrintStream clientos=new PrintStream(new BufferedOutputStream(user.getSocket().getOutputStream(),1024),false);
						          clientos.println("Sorry,no connecting");
						          clientos.flush();
						    } 
					      }
					      else
					      {
						      if(inputLine.regionMatches(true,0,kick,0,5))
						      {
						         String kickName=inputLine.substring(5);
							     if(user.getIsAdministrator())
							     for(int i=0;i<userList.size()-1;i++)
						         {
							         tempUser=(User)userList.get(i);
							         if(tempUser.getUserID().equalsIgnoreCase(kickName))
							         {
								          tempUser.setCurrentChatroom(null);
								          PrintStream clientos=new PrintStream(new BufferedOutputStream(tempUser.getSocket().getOutputStream(),1024),false);
								          clientos.println("kickedfromhere");
								          clientos.flush();
								          break;
							         }
						         }
						        }
					
					             else
					             {
					                 if(inputLine.equalsIgnoreCase(remove))

⌨️ 快捷键说明

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