Java网络编程实践
课程设计说明书
课程名称:Java网络编程课程设计_
题目:__基于C/S的班级聊天室(聊)工具
姓名:____HJC_____
学号:201211012 201211006
教学班号:软件工程1201班
指导教师:xxx_______
xxxxxx软件科学与工程系
二○一三年十二月二十二 日
Java网络编程实践任务书
目的:熟悉JAVA 语法,掌握图形化界面、多线程、网络、数据库等综合编程,掌握用编程语言开发由若干功能组成的小型项目的基本流程,增强动手实践能力,巩固和加强书本知识的学习,体会JAVA编程的特点。
题目 1:基于C/S的班级即时通讯工具(2人)
要求:
1. C/S模式,基于Socket实现,服务器端用多线程来处理同时多个客户端连接。
2. 数据存储:服务器端存储最少一个班级的信息;最好多个班级,主要存储班级若干学生的基本信息。用数据库存储。下面所有功能只考虑一个班是基本实现,考虑多个班是拓展实现。
3. 界面:GUI界面,友好直观,布局合理,方便的功能入口。
4. 功能:
1) 登陆 输入用户名和密码;用户名是学号,有初始密码,例如111111;
2) 登陆验证 根据服务器端存储的班级信息,对输入的用户进行验证,看是否存在于该班(只考虑一个班的情况)。或是否是某个班的学生(多个班的情况)。验证通过进入主界面,否则给出错误提示。
3) 主界面列出该学生好友列表(同班级同学默认全是该生好友,如果是多个班则可以添加别班好友并经对方批准)。
4) 即时聊天,选中某个好友,双击打开窗口聊天。如果不在线则服务器等对方上线后转发(此功能属拓展实现)。
5) 可以修改自己的登陆密码。
6)
题目 2:基于C/S的班级聊天室(聊)工具(2人)
要求:
1. C/S模式,基于Socket实现,服务器端用多线程来处理同时多个客户端连接。
2. 数据存储:服务器端存储一个班级的信息;主要存储班级若干学生的基本信息。用数据库存储。
3. 界面:GUI界面,友好直观,布局合理,方便的功能入口。
4. 功能:
a) 登陆 输入用户名和密码;用户名是学号,有初始密码,例如111111;
b) 登陆验证 根据服务器端存储的班级信息,对输入的用户进行验证,看是否存在于该班。验证通过进入主界面,否则给出错误提示。
c) 主界面应划分几个部分,至少有聊天室窗口部分(显示多人的聊天信息),自身发送聊天信息的窗口部分,聊天室成员列表部分,最好实现在线用户区别显示(此功能属拓展实现)等。进入主界面就可以参与聊。
d) 可以修改自己的登陆密码。
题目 3:基于C/S的学生信息管理(1人)
实现应用,可以通过网络在客户端对存放在服务器端的学生信息表(至少包含学号、姓名、性别、年龄、籍贯等字段)学生纪录增、删、改、查,并返回结果。要能通过菜单选择功能。基于Socket,多客户端使用多线程,以能同时从多个客户端执行功能。
必须提供友好直观、布局合理的图形界面选择功能、显示信息和填写修改信息。
成员名单:侯吉超、毛建柏
分工列表
登陆界面 | 毛建柏 | socket编程聊天室基本流程
修改密码界面 | 侯吉超 |
聊天窗口界面 | 毛建柏 |
好友界面 | 侯吉超 |
服务器代码 | 侯吉超 |
连接数据库 | 侯吉超 |
课程设计报告 | 侯吉超 |
1、项目简述和目的
聊天室做为即时通讯的一种,即时通讯(Instant Messenger,简称IM)软件可以说是目前我国上网用户使用率最高的软件,无论是老牌的ICQ,还是国内用户量第一的腾讯QQ,以及微软的MSN Messenger都是大众关注的焦点,它们能让你迅速地在网上到你的朋友或工作伙伴,可以实时交谈和互传信息。而且,现在不少IM软件还集成了数据交换、语音聊天、网络会议、的功能 。
要求:
1. C/S模式,基于Socket实现,服务器端用多线程来处理同时多个客户端连接。
2. 数据存储:服务器端存储最少一个班级的信息;最好多个班级,主要存储班级若干学生的基本信息。用数据库存储。下面所有功能只考虑一个班是基本实现,考虑多个班是拓展实现。
3. 界面:GUI界面,友好直观,布局合理,方便的功能入口。
4. 功能:
1) 登陆 输入用户名和密码;用户名是学号,有初始密码,例如111111;
2) 登陆验证 根据服务器端存储的班级信息,对输入的用户进行验证,看是否存在于该班(只考虑一个班的情况)。或是否是某个班的学生(多个班的情况)。验证通过进入主界面,否则给出错误提示。
3) 主界面列出该学生好友列表(同班级同学默认全是该生好友,如果是多个班则可以添加别班好友并经对方批准)。
4) 即时聊天,选中某个好友,双击打开窗口聊天。如果不在线则服务器等对方上线后转发(此功能属拓展实现)。
5) 可以修改自己的登陆密码。
目的:
通过此项目实训——JAVA聊天室的设计,实践、总结、回顾了网络编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试
程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握,理论与时间相结合。本文的主要工作集中在:该课程基于C/S模式,客户机向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。当用户聊天时,将当前用户名、聊天对象、聊天,内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。
进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计四大特性的理解,针对JAVA语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
2、解题基本思路
当用户聊天时,将当前用户名、聊天对象、聊天内容、聊进行封装,然后与服务器建立S
ocket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。
当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问,具体实现过程如图3-6所示。
接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。
当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。
当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问,具体实现过程如图3-6所示。
接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。
当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。
3、分析和设计
本系统主要通过客户端,服务器端来体现聊天系统的基本功能。
(1)服务器端
1.处理用户登录
2.处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容
3.处理用户得到信息
4.处理用户退出
5.保存用户聊天信息。
(2)客户端
1.用户登录界面及结果
2.用户发送信息界面及结果
3.用户得到信息界面及结果
4.用户退出界面及结果
目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为Live Messenger)以及跨平台Gaim等。本人取
最具代表性的QQ和MSN进行了一些研究,作为我开发聊天系统的准备。
腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。腾讯的成功与其对QQ的不断创新和完善是分不开的。
参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信。
4、主要程序源代码
客户端主要代码:
import java.io.*;
import javax.swing.*;
import java.*;
import java.awt.event.*;
import java.awt.*;
DateFormat;
import java.util.Date;
class DL
{
private JFrame f,jf;
private Socket s;
private PrintWriter p;
private BufferedReader br;
private TextField text1,text2,t,t1,t2,t3;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论