小小QQ聊天室



  要实现聊天室,要有服务器和客户端。

一 、服务器:

      我用了7个类:

  1. myFrame是主类,显示服务器界面,发布管理员消息,显示在线用户消息,踢人,对某一个人发布消息,

显示在线者聊天 的所有消息。

 

执行发信菜单项的功能

	private void sendto1(int i) {
		final serverThread th=chatList.arr.get(i);
		JDialog jd=new JDialog(this,true);//发送对话框
		jd.setLayout(new FlowLayout());
		jd.setTitle("给"+th.user.getName()+"发送消息");
		jd.setSize(400, 100);
		final JTextField jt=new JTextField(20);//写消息的文本框
		JButton jb=new JButton("发送");
		jd.add(jt);
		jd.add(jb);
		jb.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				System.out.println("发送了一条消息!");
				String s="管理员对你说:"+jt.getText();
				ja.append("管理员对"+th.user.getName()+"说:"+jt.getText()+"\r\n");
				th.sendMessage(s);//发送消息
			}
			
		});
		jd.setVisible(true);
		jd.validate();
	} 

 执行踢人菜单项功能

	private void delp(int i) {
		chatList.removeClient(chatList.arr.get(i));
	}

 发消息给一个人

private void sendMessageall(String s) {
		for(int i=0;i<chatList.arr.size();i++){
			serverThread ser=chatList.arr.get(i);//得到线程对象	
			ja.append(s+"\r\n");
			ser.sendMessage(s);//调用线程类中的发消息方法,发送消息
		}

 

  2. chatList :服务器对客户机线程处理,转发消息的类

       将每一个客户的对应的线程对象加入队列中:addClient(serverThread sc)

       给每一个在线客户机发送 "**上线了!"的消息:castMsg(UserInfo ownU, String s)

       将该线程对象从队列中移除: removeClient(serverThread sc)

  3. UserInfo:是用户个人类

  4. serverThread:对客户机连接对象处理的类

      处理用户发送过来的信息: processchat()

      发送信息: processchat(),字符串要以"\r\n"结尾

      得到用户对象:getOwnU()

      关闭连接并将线程从队列中移除:closeMe();

  5. test1:启动服务器,调用accept()方法让服务器进入等待状态

  6 .listInterfac:继承ListModel接口,对Jlist的ListModel进行处理

  7 . 账号验证,数据保存、更改等功能实现:DaoTools

      用户数据保存在Map<String,UserInfo>中

     验证用户消息:checkLogin(UserInfo user)

 

 

二 客户端:验证用户方法和连接服务器,然后聊天(内容通过服务器管理)

有3个类:

  myFrame2:显示登录界面和聊天界面

  MsgThead:用户登录成功的线程

  test2: 对聊天线程进行处理

      连接服务器,并将连接交给线程处理,认证用户: chatServer(String useName, String pwd)

      读取服务器消息方法: readM()

      客户发送消息:sendM(String s)

  服务器接界面:  

小小QQ聊天室

 

在线用户列表,可以给每一个人发信和踢人

 

小小QQ聊天室

给用户 2 发消息的消息框

 

 

客户登录界面

 

小小QQ聊天室

 

客户1的聊天界面  ,以及部分聊天消息!

 

小小QQ聊天室

你可能感兴趣的:(聊天室)