聊天室程序设计.doc_第1页
聊天室程序设计.doc_第2页
聊天室程序设计.doc_第3页
聊天室程序设计.doc_第4页
聊天室程序设计.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA网络编程-文本传输 学院:通信与信息工程班级:电子商务1002班姓名:王鹏飞学号:1007100222网络聊天室功能描述网络聊天室是一种应用广泛网络聊天方式,操作简单,功能丰富,是教学和学习面向对象的编程思想的理想项目。可以使用多种编程语言设计和开发出功能完善的网络聊天室。本系统采用C/S架构设计,用JAVA语言设计和实现,整个项目分为服务器端和客户端。使用了最新的JAVA SE标准Swing组件,开发出简洁美观布局合理的客户端和服务器界面;利用Socket网络开发技术实现客户端和服务器端的连接访问,实现网络通信功能;通过对数据流合理的封装,实现信息发送和接受。同时,采用多线程、多任务的设计思想,令服务器性能稳定,客户端通信流畅,基本实现聊天室的功能。服务器端功能:服务器的基本功能有:启动服务器,关闭服务器,监听客户端连接请求,显示在线用户,显示客户端连接信息,发送系统消息等。服务器端功能描述:1. 启动服务器:客户在运行服务端程序后,点击启动服务器,服务器程序创建并箭筒特定端口的ServerSocket,并启动一个主线程,等待客户端的连接,如果有客户端连接,服务器向工作线程队列中加入与客户通信的任务,工作线程不断从工作线程中取出任务并执行。同时在服务器消息面板中显示,服务器启动成功。2. 关闭服务器:服务器关闭时,向所有连接的客户端发送消息,告知将服务器关闭,同时关闭socket,之后服务器界面关闭3. 监听客户端请求:服务器在启动后一直监听客户端的运行情况,比如有新用户登录,用户退出等。4. 显示在线用户:用户登录后即客户端与服务器连接成功,服务器端用户列表界面显示出所有登录用户的用户名,用户退出后服务器更新用户列表5. 显示用户连接信息:用户在登录成功后,服务器端服务信息界面显示用户登录的信息,包括客户端IP地址,端口号。6. 发送系统消息:可以从服务器端广播系统消息,该消息会发送给所有连接的客户端,此功能 可用于服务器管理者向所有用户发送重要的系统消息。服务器界面如下图所示:客户端功能:客户端有用户登录功能,连接服务器功能,断开服务器供,显示聊天室所有在线用户功能,统计聊天室用户数量功能,显示当前用户用户名的功能,聊天室聊天功能,用户退出聊天室等功能。功能图如下图所示:具体功能描述:1. 用户登录:用户打开聊天室客户端程序后,输入用户名,点击连接服务器,就可以进入聊天室系统,为防止用户不知道服务地址和端口号,用户界面上已经将服务地址和端口号设定,且不能更改,用户只需输入用户名,只要用户名符合要求,可以输入任何用户名,无需注册,任何人都可以登录,退出后不会留下个人信息,如果需要再次登录只需再次输入用户名即可,可以与上次登录的用户名不一致。2. 连接服务器:用户在输入用户名后,点击连接服务器即可进入聊天室系统,否则无法发送消息。此时服务器接收客户端的请求,与客户端建立通信,服务器显示用户的练级信息,及新用户的用户名,端口号,同时告知聊天室其他成员,某某用户加入聊天室,更新服务器与所有客户端的用户列表。3. 断开服务连接:用户在登录聊天室成功后,如果想要退出系统,可以点击断开服务器,或点击关闭按钮,或点击窗口关闭按钮就可退出聊天室,与服务器断开练级,用户可以重新登录。4. 显示在线用户列表:用户在登录聊天室后,服务器端增加新用户的用户名,同时遍历原有用户列表,将新用户的用户名增加到用户列表中,同时更新所有客户端的用户列表,并显示更新结果。5. 统计聊天室所有用户数量:在服务器更细用户列表后统计用户数量,并显示在所有客户端。此功能属于显示在线用户列表的次要功能。6. 显示当前用户:用户登录后,输入的用户名会保存在用户名输入文本域内,同时在用户列表中以红色字体显示当前用户的用户名。如果用户同时开启多个客户端,此功能用于区分不同的客户端。7. 聊天功能:这是聊天室的主要功能,用户可以发送任何文字与聊天室的所有成员聊天,并且接收其他用户发送的消息,类似QQ群组的功能。8. 退出聊天室:用户在想要退出聊天室时。点击关闭按钮即可突出聊天室。此功能类似关闭连接功能。客户端效果效果如下:(界面效果随系统主题更改)实现技术a) 使用ServerSocket、Socket完成服务端和客户端的连接。b) 服务端使用多线程的方式可以接受多个客户端。c) 使用对象的方式,在服务端和客户端之间传送数据。问题解决办法d) 服务端和客户端的数据通过什么方式维护?将这些数据封装成类,服务器和客户端发送对象来维护。e) 当服务端强制退出时,应该做什么处理?告诉客户端服务端退出,然后关闭所有到服务端的连接。客户端根据服务端退出,断开和服务端的连接。服务端效果图:客户端效果图:群聊通信:设计思路:实现网络通信必须建立在TCP/IP协议的基础上,致力于实现应用层,传输层向应用层提供套接字Socket接口.socket封装下层的数据传输细节。应用层的程序通过Socket来建立与远程主机的连接,以及进行数据传输。聊天室程序采用C/S架构,因此先设计图形界面,将必要的组件布局好,然后测试在不同计算机上的显示效果,然后更改,确定界面没有问题后,设计程序的逻辑功能等。服务器端程序点击启动后显示一个服务器界面,然后在启动服务器上添加监听器,要使服务器能稳定的收发数据,采用TCP的传输模式,服务器通过一直监听端口,来接收客户程序的连接请求,在服务器程序中首先创建一个ServerSocket对象,在构造方法中指定监听的端口:serversocket=new ServerSocket(8000);/监听8000端口服务器端口号使用1025到65535之间的自定义的服务端口。ServerSocket的构造方法在操作系统中把当前进程注册为服务器进程,服务器程序调用ServerSocket对象的accept(),方法,通过该方法一直监听端口,等待客户端的连接请求,如果接收到一个连接请求,accept()方法返回一个socket对象,这个Socket对象与客户端的Socket对象形成一条通向线路:socket=serversocket.accept();/等待客户端的连接请求Socket类通过调用inputStream()和outputStream()方法,返回输入流InputStream和输出流OutputStream对象。程序向输出流写数据,完成发送数据,从输入流读数据,接收来自对方的数据。outputStream=new ObjectOutputStream(socket.getOutputStream();inputStream=new ObjectInputStream(socket.getInputStream();ObjectOutputStream继承自OutputStream服务器启动后就一直监听端口等待客户端连接,将客户端传过来的数据封装成对象,然后通过ObjectOutputStream 将 Java 对象的基本数据类型写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过使用流则可以在另一台主机上或另一个进程中重构对象。客户端财通同样的思路先设计程序的界面,然后在不同组件中添加监听器,客户进程的端口由所在主机的操作系统动态分配,当客户的进程要求与一个服务器进程进行连接时操作系统为客户进程随机分配一个还未被占用的端口,当客户进程与服务器断开连接时这个端口就被释放。客户启动客户端的程序然后输入用户名,先对用户名进行校验,输入符合要求后,然后将用户名,端口号,主机地址封装成对象,然后调用socket对象的方法将数据发送到服务器上,然后服务器将用户名增加进用户列表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论