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

📄 chatserver.java

📁 此源码是个JAVA开发的简单聊天室。给大家参考
💻 JAVA
字号:
import javax.swing.*;
//import java.awt.*;
import java.awt.event.*;
//import javax.swing.event.*;
import java.io.*;
import java.net.*;
import java.util.*;

class ChatMessage implements Serializable
{
	String messageType;
	String ChatName;
	String ToChatName;
	String ChatMsg;
	Vector vector=new Vector(1,1);
	ChatMessage(String MT,String CN,String TCN,String CM,Vector v)
	{
		messageType=MT;
		ChatName=CN;
		ToChatName=TCN;
		ChatMsg=CM;
		vector=v;
	}
}

public class ChatServer extends Thread //implements ActionListener
{
	//ServerPanel sp=new ServerPanel();
	
	ServerSocket serverSocket;
	Socket clientSocket;
	ChatMessage msg;
	static Vector vector=new Vector(1,1);
	static Hashtable h=new Hashtable();
	String messageType;
		String chatname;
		String tochatname;
		String chatmsg;
	boolean running=false;
	
		
//	public ChatServer()
//	{
//		sp.button1.addActionListener(this);
//		sp.button2.addActionListener(this);
//		sp.button3.addActionListener(this);
//		sp.button4.addActionListener(this);
//		sp.button2.setEnabled(false);
//		
//	}
	
	public void run()
	{
		try
		{
			while(true)
			{
				clientSocket=serverSocket.accept();
				Connect con=new Connect(clientSocket);
			}
		}
		catch(IOException e)
		{
			System.out.println("Cannot listen to the client "+e);
		}
	}
//数据读取开始	
	class Connect extends Thread
		{
			ObjectInputStream fromClient;
			ObjectOutputStream toClient;
			public Connect(Socket netClient)
			{
				try
				{
					fromClient=new ObjectInputStream(netClient.getInputStream());
					toClient=new ObjectOutputStream(netClient.getOutputStream());
					
				}
				catch(Exception e)
				{
					System.out.println("Cannot get the client stream "+e);	
				}
				
				this.start();
			}
			public void run()
			{
				try
				{
					while(true)
					{
						msg=(ChatMessage)fromClient.readObject();
//						System.out.println("messageType"+" "+msg.messageType);
//						System.out.println("ChatName"+" "+msg.ChatName);
//						System.out.println("ToChatName"+" "+msg.ToChatName);
//						System.out.println("vector"+" "+msg.vector);
//						System.out.println("vector"+" "+vector);
						//System.out.println("-------------------------------------");
						if(msg.messageType.equals("Login"))
						{
							/*for(int i=1;i<vector.size();i++)
							{
								if(vector.get(i).toString().equals(msg.ChatName))
								{
									ChatMessage msg=new ChatMessage("Error",null,null,null,null);
									System.out.println(msg.ChatName);
									SentToAll(msg);
									break;
								}
								
							}*/
							//sp.TInfo.append(msg.ChatName+" 进入聊天室"+"\n");
							System.out.println(msg.ChatName+" 进入聊天室"+"\n");
															vector.addElement(msg.ChatName);
															chatname=msg.ChatName;
															ChatMessage msgs=new ChatMessage(msg.messageType,msg.ChatName,msg.ToChatName,msg.ChatMsg,vector);
															putSocket(msgs.ChatName,toClient);
															SentToAll(msgs);
															//sp.LChater.removeAll();
															//sp.LChater.setListData(vector);
									
						}
						else if(msg.messageType.equals("LoginOut"))
						{
							//sp.TInfo.append(msg.ChatName+" 离开了聊天室"+"\n");
							System.out.println(msg.ChatName+" 离开了聊天室"+"\n");
							vector.remove(msg.ChatName);
							chatname=msg.ChatName;
							ChatMessage msgs=new ChatMessage(msg.messageType,msg.ChatName,msg.ToChatName,msg.ChatMsg,vector);
							removeSocket(msgs.ChatName);
							SentToAll(msgs);
//							sp.LChater.removeAll();
//							sp.LChater.setListData(vector);
						}
						else
						{
							putSocket(msg.ChatName,toClient);
							SentToAll(msg);
						}
					}
				}
				catch(Exception e)
				{}
			}
		}
//	数据读取结束		
//发送信息开始	
	void SentToAll(ChatMessage m)
	{
		try
		{
				for(Enumeration e=h.elements();e.hasMoreElements();)
				{
					((ObjectOutputStream)e.nextElement()).writeObject(m);
//						System.out.println("send messageType"+" "+m.messageType);
//						System.out.println("send ChatName"+" "+m.ChatName);
//						System.out.println("send ToChatName"+" "+m.ToChatName);
//						System.out.println("send vector"+" "+m.vector);
					//	System.out.println("-------------------------------------");
					//	System.out.println("-------------------------------------");
				}
		}
		catch(Exception e)
		{}
	}
//	发送信息结束	
//	public void actionPerformed(ActionEvent e)
//					{
//						Object source=e.getSource();		
//						if(source==sp.button1)//启动服务器
//						{
//							try
//							{
//								StartServer();
//							}
//							catch(Exception ex)
//							{
//								System.out.println("Error: "+ex);
//							}
//						}
//						else if(source==sp.button2)//停止服务器
//						{
//							StopServer();
//						}
//						else if(source==sp.button3)//退出服务器
//						{
//							try
//							{
//								int returnvalue=JOptionPane.showConfirmDialog(sp.PServer," 确认要关闭服务器吗? ","关闭服务器",JOptionPane.YES_NO_OPTION);
//								
//								if(returnvalue==JOptionPane.YES_OPTION)
//								{
//									System.exit(0);
//								}
//								else
//								{
//									System.out.println("nothings ");
//								}
//							}
//							catch(Exception ex)
//							{
//								System.out.println("Error: "+ex);
//							}
//						}
//						else if(source==sp.button4)//关于
//						{
//							JOptionPane.showMessageDialog(sp.PServer," 聊天室版本 V0.3_0524_beat  ","关于",JOptionPane.INFORMATION_MESSAGE);
//						}
//					}
//运行服务器开始	
//	void StartServer()
	public ChatServer()
		{
			if(!running)
			{
				try
				{
					vector.addElement("所有人");
					serverSocket=new ServerSocket(1001);
					this.start();
//					sp.TInfo.append("***服务器启动***"+"\n");
                    System.out.println("***服务器启动***"+"\n");
					running=true;
				//	sp.button1.setEnabled(false);
				//	sp.button2.setEnabled(true);
				}
				catch(Exception e)
				{
					System.out.println("Error: "+e);
				}
			}
//			else
//			{
//				JOptionPane.showMessageDialog(sp.PServer," 服务器已经打开 ","服务器已经打开",JOptionPane.ERROR_MESSAGE);
//				System.out.println("服务器运行中");
//			}
		
		}
//	运行服务器结束
//停止服务器开始	
//		void StopServer()
//		{
//			System.out.println(running);
//			if(running==true)
//			{
//				try
//				{
//					ChatMessage msgs=new ChatMessage("Closed",null,null,null,null);
//					if(vector.size()>1)
//					{
//						SentToAll(msgs);
//						vector.clear();
//						String s="所有人";
//						vector.removeAllElements();
//						vector.addElement(s);
//						running=false;
//						sp.LChater.removeAll();
//						sp.LChater.setListData(vector);
//					}
//					try
//					{
//						//this=null;
//						System.out.println("Server close");
//						sp.TInfo.append("***服务器关闭***"+"\n");
//						serverSocket.close();
//					}
//					catch(IOException ioe)
//					{
//						System.out.println("Server cant close");
//					}
//					running=false;
//					sp.button1.setEnabled(true);
//					sp.button2.setEnabled(false);
//				}
//				catch(Exception e)
//				{
//					System.out.println("Error: "+e);
//				}
//			}
//			else
//			{
//				JOptionPane.showMessageDialog(sp.PServer," 服务器已经关闭 ","服务器已经关闭",JOptionPane.ERROR_MESSAGE);
//				System.out.println("服务器没有运行");
//			}
//		
//		}
//	停止服务器结束	
	public synchronized void putSocket(String name,ObjectOutputStream to)
	{ 
		ChatServer.h.put(name,to); notifyAll(); 
	}
	
	public synchronized void removeSocket(String name)
	{ 
	 	try
	 	{ 
			((ObjectOutputStream)h.get(name)).close(); h.remove(name); notifyAll(); 
		}
		catch(Exception e)
		{ 
			System.out.println("退出用户输出流关闭错误");
		}
		
	} 	
	public static void main(String args[])
	{
		new ChatServer();
	}
}

⌨️ 快捷键说明

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