zoukankan      html  css  js  c++  java
  • 从零开始学Java 第24章 网络聊天室

    第24章  网络聊天室
    在网络编程一章中,介绍过一个简单的聊天室程序,其功能比较有限,并且是界面也不友好。本章将会完整的介绍一个相对来说完整的,界面友好的聊天室。本章的聊天室程序是的客户端是以Applet形式实现的,更方便Java嵌入在网页中使用的原意。
    24.1  服务器端
    在聊天室服务器端需要完成的任务有以下几点:
    监听用户的连接请求
    储存连接用户的信息
    转发用户发送的信息
    处理用户的退出的信息
    24.1.1  服务器
    服务器端首先需要建立一个ServerSocket,然后监听用户的连接请求。当监听到用户请求时,建立相应的Socket,通过该Socket与用户进行信息的交互。
    24.1.2  服务器端线程对象
    服务器端监听用户的请求,得到一个Socket,把它封装到一个内部类Client中。Client类是一个线程类,建立该类的对象后,启动线程,就可以不间断的进行客户端与服务器的交互。
    24.1.3  消息解析
    在Client类的run方法中,该线程需要不停的读取用户的输入。获得输入后需要对输入按格式进行解析注意这端代码:
    StringTokenizer st=new StringTokenizer(line,":");  //分解字符串
    String keyword=st.nextToken();
    StringTokenizer是一个字符串解析类。通过该类可以解析用户的输入信息,通过该信息来区别传递的是聊天信息还是退出信息。构造StringTokenizer类的时候,第一个参数是要解析的字符串,而第二个参数则是字符串的分隔符。
    24.2  客户端
    客户端是通过Applet的形式实现的。该类使用户可以进行连接服务器,可以发送信息,并能结束其它用户发送的信息。客户端的重点在于Applet的事件处理,发送接受消息以及窗体的显示。
    24.2.1  事件处理
    在Applet中,有可能触发3个事件:连接服务器、断开连接、发送消息。对这三个事件都应该有相应的方法进行处理。
    24.2.2  输入输出流
    前面说到了Listen类,该类主要负责与服务器端的交互。接受用户的输入,将输入按格式组织起来,发送给服务器端。另一方面要接受服务器的消息,按格式解析后,显示在屏幕上。
    24.2.3  Applet窗体以及完整代码
    ChatClient类主要负责客户端窗体的显示,它需要继承Applet类。添加相应的组建在界面上,并监听用户触发的事件。根据用户触发的事件进行相应的操作。
    24.3  小结
    本章的主要内容是是实现了一个客户端为Applet实现的聊天室小程序。通过该程序用户可以体会下Applet编程以及网络编程,另外也可以用到集合框架的知识,在存储用户对象的时候使用集合框架来实现。用户可以仔细体会整个程序的编写过程。

  • 相关阅读:
    AGC 015 E
    CF 1041 F. Ray in the tube
    AGC 005 D
    CF 348 D. Turtles
    2069: [POI2004]ZAW
    AGC 007 D
    zhengruioi 470 区间
    2653: middle
    Django 源码安装及使用
    Django MTV模型思想
  • 原文地址:https://www.cnblogs.com/yoogoo/p/2467292.html
Copyright © 2011-2022 走看看