基于socket的网络聊天室.docx

上传人:b****5 文档编号:7611278 上传时间:2023-01-25 格式:DOCX 页数:10 大小:152.30KB
下载 相关 举报
基于socket的网络聊天室.docx_第1页
第1页 / 共10页
基于socket的网络聊天室.docx_第2页
第2页 / 共10页
基于socket的网络聊天室.docx_第3页
第3页 / 共10页
基于socket的网络聊天室.docx_第4页
第4页 / 共10页
基于socket的网络聊天室.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于socket的网络聊天室.docx

《基于socket的网络聊天室.docx》由会员分享,可在线阅读,更多相关《基于socket的网络聊天室.docx(10页珍藏版)》请在冰豆网上搜索。

基于socket的网络聊天室.docx

基于socket的网络聊天室

 

《JAVA程序设计》课程设计报告

 

院系

题目基于socket的Client/Server监听模式

学生姓名

学生学号

专业班级

指导教师

完成时间

(空2行)

1需求分析…………………………………………………………………1

2系统设计……………………………………………………………………Y

2.1界面模块设计…………………………………………………………Y

2.2用户客户端登录验证设计……………………………………………Y

2.3服务器模块设计…………………………………………………………Y

2.4客户端模块设计…………………………………………………………Y

2.5数据传输加密设计…………………………………………………………Y

3实现……………………………………………………………………Y

3.1界面模块实现…………………………………………………………Y

3.2用户客户端登录验证实现……………………………………………Y

3.3服务器模块实现…………………………………………………………Y

3.4客户端模块实现…………………………………………………………Y

3.5数据传输加密实现…………………………………………………………Y

 

X×××××(正文第X章)…………………………………………………Y

结论………………………………………………………………………………Y

参考文献…………………………………………………………………………Y

附录A源代码(必须)………………………………………………………Y

 

正文部分:

1需求分析

现在网络通信应用的很广泛,几乎所有应用都基于网络实现通信。

而要实现异地的网络通信,尤其是C/S结构的软件,使用套接字的网络编程是实现双方通信的基础。

本课程设计就是基于JavaTCP客户端和服务器、UDP组播实现的群聊。

1.1基本功能需求

以下三点是本课程设计的基础功能实现,即要完成基本的客户端-服务器的连接通信。

性能及其他创新点可以自行实现。

1.1.1有客户端和服务器,服务器负责客户端之间的通信(采用C/S模式,即Client/Server监听模式)。

1.1.2客户端A对文件进行加密,经过服务器,把密文发送给客户端B(具体加密算法,方式自定)。

1.1.3客户端B接收来自客户端A的密文,对客户端A传送过来的文件解密,还原成明文。

1.2扩展功能需求

以下是本课程设计的扩展功能实现,即在完成基本功能需求的基础上,可以尝试完成以下功能。

1.2.1提供客户端用户注册功能。

用户使用客户端前,需要先进行注册,才能登录使用。

用户的注册信息(登录帐号和密码)使用MySQL数据库进行持久化存储。

1.2.2客户端A可以将加密数据,经过服务器,传输到多个客户端。

此处要求使用UDP协议。

基于UDP的特性,可以选择适当的广播通信方式,此处最好使用UDP组播,即凡是加入到“同一个多播组”中的用户,均可以接收到数据,实现数据的高效传输。

1.3性能优化需求

以下则是对性能方面的改进,使得整体具有更好的性能。

简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。

1.3.1用客户端和服务器实现TCP通信时,服务器负责客户端之间的通信,服务器套接字在始终监听这端口,等待客户端的连接,一旦有客户端来连接,为该客户端启动一个线程,去单独处理这个客户端的通信聊天,服务器不堵塞,可以继续接收其他用户的连接;单独创建线程会延迟较大,可以引入线程池,创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。

对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能,从而优化性能速度。

1.3.2因为本课程设计是使用图形用户界面的基于socket的Client/Server监听模式,实现网络通信。

对客户端而言,不仅要构造(初始化)用户界面,还要初始化网络模块,创建客户端套接字,实现对单一服务器(固定IP地址)的连接,在整体响应效果上,会有“延迟”和“卡顿”,可以采用多线程技术,将加载耗时,初始化不安全的模块移除主线程,使得响应速度更快。

2系统设计(作为正文第2章标题,用小3号黑体,加粗,并留出上下间距为:

段前0.5行,段后0.5行)

软件的整体设计,以需求规格说明书为输入,以产生满足功能需求和非功能需求的设计方案为输出。

本课程设计则是采用基于socket的Client/Server监听模式。

首先必须满足用户功能需求,软件系统能够在用户给定的环境下有效运行,设计出具有可行性、易维护的软件系统。

客户端/服务器范型把软件分为两类--客户端程序和服务器程序。

客户端软件启动一个连接并发送请求,而服务器软件监听连接并处理请求。

在UDP编程环境中,没有建立实际的连接,并且UDP应用程序可以在相同的套接字上建立并接收请求。

在TCP环境中,两台计算机之间建立了连接,客户端/服务器范型是相对应的。

系统整体结构图如下:

系统整体结构图

 

2.1界面模块设计

界面是用户与软件系统之间传递和交换信息的媒介和窗口;对软件的人机交互、操作逻辑、界面美观的整体设计,不仅是让软件变得有个性有品味,还可以让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点,使软件系统更人性化,更灵活。

本例中采用模仿QQ登录的界面,服务器和客户端都采用一样的,不同的是,客户端登录界面通过一个“用户注册”接口。

采用JFrame去边框化。

如下图:

 

2.2用户客户端登录验证

登录验证模块,则需要连接数据库,验证当前登录用户是否已注册;对已注册的用户进行用户密码匹配验证;对未注册的用户,要提示用户进行注册帐号。

登录验证模块,则需要一个Java类DbUtil,负责处理,里面定义关于数据库操作,取用户表中的记录进行匹配查询。

2.3服务器模块设计

服务器模块,是本课程设计实现socket的Client/Server监听模式的非常重要的一步。

因为使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通信,它分为服务器端和客户端两部分,而服务器负责客户端之间的通信。

服务器端程序调用ServerSocket类中的accept()方法等待客户端的连接请求,一旦accept()接收了客户端连接请求,该方法返回一个与该客户端建立了专线连接的Socket对象,不用程序去创建这个Socket对象。

建立了连接的两个Socket是以IO流的方式进行数据交换的,Java提供了Socket类中的getInputStream()返回Socket的输入流对象,getOutputStream()返回Socket的输出流对象。

服务器设计要点:

1、TCP服务器程序要想接收多个客户端连接需要循环调用 ServerSocket.accept()方法。

2、服务器程序与每个客户端连接的会话过程不能互相影响,需要在独立的线程中运行,因此需要设计一个线程类。

3、一个线程服务对象与一个服务器端Socket对象相关联,共同来完成与一个客户端的会话。

用一个线程,单独地处理一个用户客户端的聊天数据的传输,各个用户互不干扰。

4、服务器端,不应有static静态的属性,因为服务器是所有连接的客户端所共享的。

5、服务器端先运行,否则客户端会因为无法连接服务器端而产生错误。

服务器一直在监听。

然后客户端开始运行,并且请求连接服务器(TCP的连接是不需要用户名和密码的),连接成功后,发送数据。

TCP服务器与客户端间的数据传输示意图:

 

创建一个TCP服务器端程序的步骤

(1)创建一个ServerSocket

(2)从ServerSocket接受客户连接请求

(3)创建一个服务线程处理新的连接

(4)在服务线程中,从socket中获得I/O流

(5)对I/O流进行读写操作,完成与客户的交互

(6)关闭I/O流

(7)关闭Socket

 

2.4客户端模块设计

 

客户端设计要点:

1、客户根据提供的IP地址连接到相应的服务器;

2、服务器等待客户的连接,一旦连接成功,与该客户端建立了专线连接的Socket对象;

3、客户接收服务器发送的信息并显示。

客户端--“聊天”UI设计如下:

 

创建一个TCP客户端程序的步骤

(1)创建Socket

(2)获得I/O流

(3)对I/O流进行读写操作

(4)关闭I/O流

(5)关闭Socket

 

2.5数据传输加密设计

 

3实现

1.用户登录,在线用户注册。

2.客户端与服务器的TCP连接,实现消息的发送与接受

3.JavaSwing与多线程编程技巧

 

3.1界面模块实现

3.2用户客户端登录实现

3.3服务器模块实现

服务端:

1、 创建服务端ServerSocket,绑定指定端口号

ServerSocketserverSocket=newServerSocket(9999);

2、 阻塞,服务端等待接收客户端请求

Socketsocket=serverSocket.accept();

3、 获取服务端输入流,可以读取客户端写出的数据

InputStreamin=socket.getInputStream();

4、 获取服务端输出流,可以写出数据到客户端

OutputStreamout=socket.getOutputStream();

5、 服务端写出数据到客户端

out.write("欢迎拨打传智播客报名热线,请问需要什么帮助?

".getBytes());

6、 服务端读取客户端写出的数据.如果客户端还未写出,阻塞等待.

byte[]buffer=newbyte[1024];

intlen=in.read(buffer);

Stringmsg=newString(buffer,0,len);

System.out.println(msg);

 7、释放资源

  socket.close();

  serverSocket.close();

3.4客户端模块实现

 客户端:

1、创建客户端Socket,指定服务端地址和端口,连接服务器.本地地址和端口自动绑定.

Socketsocket=newSocket("192.168.1.254",9999);

 2、获取客户端输入流,可以读取服务端写出的数据

  InputStreamin=socket.getInputStream();

 3、获取客户端输出流,可以写出数据到服务端

  OutputStreamout=socket.getOutputStream();

 4、客户端读取服务端写出的数据.如果服务端还未写出,阻塞等待

  byte[]buffer=newbyte[1024];

  intlen=in.read(buffer);

  Stringmsg=newString(buffer,0,len);

  System.out.println(msg);

 5、客户端写出数据到服务端

  out.write("我要报名JavaEE就业班!

".getBytes());

 6、释放资源

  socket.close();

3.5数据传输加密实现

 

(空2行)

总结(小3号黑体,居中)

×××××××××(小4号宋体,1.5倍行距)×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××…………

 

(空2行)

参考文献(小3号黑体,居中)

1胡曰利,吴晓芙.林木生长与养分动态模型研究V杉木林曲线[1].中南林学院学报,1999,19(4):

1-7

2曾思齐,欧阳君祥.马尾松低质低效次生林分类技术研究.[J].中南林学院学报,2002,22

(2):

12-16

3华罗庚,王元.论一致分布与近似分析.中国科学,1973(4):

339~357

4赵杰,李涛,朱慧.SQLServer数据库管理、设计与实现教程.北京:

清华大学出版社,2004.03

5

评分表:

课题名称

 

指导教师

 

评语

 

成绩评定

姓名

成绩

学号

日期

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1