您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 聊天系统计算机相关论文
  所属分类: Web开发
  开发工具:
  文件大小: 643kb
  下载次数: 0
  上传时间: 2010-03-14
  提 供 者: zqxz****
 详细说明: // 将各个组件添加到主界面 this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(panel1, BorderLayout.NORTH); this.getContentPane().add(panel2, BorderLayout.CENTER); this.getContentPane().add(panel3, BorderLayout.SOUTH); this.pack(); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); SwingUtilities.updateComponentTreeUI(this); } catch (Exception e) { e.printStackTrace(); } } 5. 该服务器端自动处理事件的代码: 事件1:关闭聊天室客户端事件 protected void processWindowEve nt(WindowEvent e){ super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { // 如果是关闭聊天室客户端,则断开连接 disconnect(); dispose(); System.exit(0); } } 事件2:处理按钮事件 public void actionPerformed(ActionEvent event) { Object source = event.getSource(); if (source == connectButton){ // 如果点击连接按钮 if (soc == null) { try { // 使用端口2525实例化一个本地套接字 soc=newSocket(InetAddress.getLocalHost(),Constants.SERVER_PORT); // 在控制台打印实例化的结果 System.out.println(soc); //将ps指向soc的输出流 ps = new PrintStream(soc.getOutputStream()); //定义一个字符缓冲存储发送信息 StringBuffer info = new StringBuffer(Constants.CONNECT_IDENTIFER).append(Constants.SEPERATOR); //其中INFO为关键字让服务器识别为连接信息 //并将name和ip用":"分开,在服务器端将用一个 //StringTokenizer类来读取数据 String userinfo = nameTextField.getText() + Constants.SEPERATOR + InetAddress.getLocalHost().getHostAddress(); ps.println(info.append(userinfo)); ps.flush(); //将客户端线程实例化,并启动 Listener=newClentListener(this,nameTextField.getText(), soc); listener.start(); } catch (IOException e) { System.out.println("Error:" + e); disconnect(); } } } else if (source == disConnectButton){ // 如果点击断开连接按钮 disconnect(); } else if (source == sendMsgButton) { //如果点击发送按钮 if (soc != null) { //定义并实例化一个字符缓冲存储发送的聊天信息 StringBuffer msg = new StringBuffer(Constants.MSG_IDENTIFER).append(Constants.SEPERATOR); //用打印流发送聊天信息 ps.println(msg.append(msgTextField.getText())); ps.flush(); } } } 事件3:断开与服务器的连接事件 public void disconnect(){ if (soc != null) { try { // 用打印流发送QUIT信息通知服务器断开此次通信 ps.println(Constants.QUIT_IDENTIFER); ps.flush(); soc.close(); //关闭套接字 listener.toStop(); soc = null; } catch (IOException e) { System.out.println("Error:" + e); } } } public static void main(String[] args){ ChatClient client = new ChatClient(); client.setVisible(true); } 事件4:客户端线程类用来监听服务器传来的信息事件 class ClentListener extends Thread { //存储客户端连接后的name信息 String name = null; //客户端接受服务器数据的输入流 BufferedReader br = null; //实现从客户端发送数据到服务器的打印流 PrintStream ps = null; //存储客户端的socket信息 Socket socket = null; //存储当前运行的ChatClient实例 ChatClient parent = null; boolean running = true; //构造方法 public ClentListener(ChatClient p, String n, Socket s) { //接受参数 parent = p; name = n; socket = s; try { //实例化两个数据流 br = new BufferedReader(new InputStreamReader(s .getInputStream())); ps = new PrintStream(s.getOutputStream()); } catch (IOException e) { System.out.println("Error:" + e); parent.disconnect(); } } // 停止侦听 public void toStop(){ this.running = false; } //线程运行方法 public void run(){ String msg = null; while (running) { msg = null; try { // 读取从服务器传来的信息 msg = br.readLine(); System.out.println("receive msg: " + msg); } catch (IOException e) { System.out.println("Error:" + e); parent.disconnect(); } // 如果从服务器传来的信息为空则断开此次连接 if (msg == null) { parent.listener = null; parent.soc = null; parent.peopleList.removeAll(); running = false; return; } //用StringTokenizer类来实现读取分段字符 StringTokenizer st = new StringTokenizer(msg, Constants.SEPERATOR); //读取信息头即关键字用来识别是何种信息 String keyword = st.nextToken(); if (keyword.equals(Constants.PEOPLE_IDENTIFER)) { //如果是PEOPLE则是服务器发来的客户连接信息 //主要用来刷新客户端的用户列表 parent.peopleList.removeAll(); //遍历st取得目前所连接的客户 while (st.hasMoreTokens()) { String str = st.nextToken(); parent.peopleList.add(str); } } else if (keyword.equals(Constants.MSG_IDENTIFER)) { //如果关键字是MSG则是服务器传来的聊天信息, //主要用来刷新客户端聊天信息区将每个客户的聊天内容显示出来 String usr = st.nextToken(); parent.chatContentTextArea.append(usr); parent.chatContentTextArea.append(st.nextToken("\0")); parent.chatContentTextArea.append("\r\n"); } else if (keyword.equals(Constants.QUIT_IDENTIFER)) { //如果关键字是QUIT则是服务器关闭的信息, 切断此次连接 System.out.println("Quit"); try { running = false; parent.listener = null; parent.soc.close(); parent.soc = null; } catch (IOException e) { System.out.println("Error:" + e); } finally { parent.soc = null; parent.peopleList.removeAll(); } break; } } //清除用户列表 parent.peopleList.removeAll(); } } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 聊天室系统的开发
 输入关键字,在本站1000多万海量源码库中尽情搜索: