1、Java聊天室项目展示,Java聊天室程序,用户注册、登录与聊天室成员一起聊天、私聊服务器监控聊天内容。服务器发送通知。服务器踢人。保存服务器日志、用户聊天信息。,聊天室的主要功能,用户登录显示一个用于输入昵称的界面聊天群聊功能:在线用户一起聊天发送悄悄话功能:与某个用户单独聊天刷新用户列表 : 用于得到所有的用户列表,功能的具体实现,Client端:显示用户登录界面设置用户名不能为空用户名不为空时,显示聊天室主窗口,连接服务器端用户名为空时,显示警告窗口用输入/输出流与服务器传递信息,Server端:启动服务器等待客户端连接客户端连接上后,启动线程,等待客户端发出信息对客户端发出的信息进行处
2、理,并发给客户端,客户端,1.用户注册界面及结果2.用户登录界面及结果3.用户发送信息界面及结果4.用户得到信息界面及结果5.用户退出界面及结果,服务器端,1.处理用户注册,2.处理用户登录,3.处理用户发送信息,4.处理用户得到信息,5.处理用户退出,程序简介,服务器,客户端,系统实现原理,当用户聊天时,将当前用户名、聊天对象、聊天内容和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添
3、加到聊天对象集Message中,以供所有聊天用户访问。接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。,用户登陆界面,定义Login类属性:JFrame frame 主窗口JTextField field1 接收用户名JButton button1 登录按钮JBut
4、ton button2 取消按钮方法:init() : 组合组件; addActionHandler():事件监听方法内部类:Window 用户名为空时的弹出窗口,聊天室图形界面GUIChatRoom属性,private final JFrame mainf;private JOptionPane jop; /昵称输入框private JPanel southp;private JPanel eastp,eastp2;private JTextArea area;private JTextField field;private JComboBox box;private JScrollPane
5、 scroll,eastscr;private JLabel eastl,southl1,southl2;private JButton send;,聊天室窗口,组件:JFrame、JTextField、JTextArea、List、JButton、JLabel方法:init():组件组合; showMe():显示窗口;addActionHandler():事件监听 内部类:TFListener 实现输出流的类 RecvThread实现输入流的类 MyWindow用于发送悄悄话的窗口,1. 与聊天室成员一起聊天。2. 可以与聊天室成员私聊。,服务器端口,集合list存储每一个Myclient。
6、开启一个线程,每当接收到消息时遍历list向所有客户端发送消息:for(int i = 0;ilist.size();i+)list.get(i).pw.println(name+说:+message);list.get(i).pw.flush();,当new 一个sockt后,则向服务器发送name;消息的接收:开启一个线程,负责接收服务器发来的message;消息的发送:文本输入框tf和按钮send添加一个ActionListener,当按回车或send是将消息发送给服务器。关闭:chatroom.getMainf()添加WindowListener当关闭时pw.close();br.close();client.close().客户端正常关闭。,部分程序代码链接,End,