摘 要 随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统 关键词:局域网 聊天 socket java 聊天系统各功能模块 (1)服务器程序模块 服务器与客户间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类java.net.Socket,使得编写网络应用程序相对容易。服务器采用多线程以满足多用户的请求,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认端口为9527,然后无限循环调用accept()方法接受客户程序的连接。 服务器线程源码: package qq.server; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.*; import qq.dao.hibernate.IServiceDao; import qq.entity.*; public class ServerController { private User user; private Socket s; private IServiceDao dao; private ObjectInputStream ois; private ObjectOutputStream oos; private OnlineUser onlineUser; www.bylw120.com public ServerController(Socket s) { super(); dao=ServerMainClass.userDao; this.s = s; } public void handle() throws Exception { ois=new ObjectInputStream(s.getInputStream()); oos=new ObjectOutputStream(s.getOutputStream()); onlineUser=new OnlineUser(ois,oos); while(true){ Request req=(Request)ois.readObject(); ois.read(); RequestType type=req.getType(); if(type.equals(RequestType.exit)){ exitHandle(); break; }else if(type.equals(RequestType.login)){ loginHandle(req); }else if(type.equals(RequestType.register)){ registerHandle(); }else if(type.equals(RequestType.offline)){ offlineHandle(); break; }else if(type.equals(RequestType.changeInformation)){ changeInformationHandle(); }else if(type.equals(RequestType.modifypasswd)){ modifypasswdHandle(req); }else if(type.equals(RequestType.sendMessage)){ sendMessageHandle(req); }else if(type.equals(RequestType.receiveFile)){ receiveFileHandle(req); }else if(type.equals(RequestType.sendFile)){ sendFileHandle(req); } } } private void modifypasswdHandle(Request req) { Long id=Long.parseLong(req.getData("id")); String oldpwd=req.getData("oldpwd"); String newpwd=req.getData("newpwd"); Response res=new Response(RequestType.modifypasswd); try { dao.updatePwd(id, oldpwd, newpwd); res.setData(1); try { oos.writeObject(res); } catch (IOException e) { e.printStackTrace(); } } catch (RuntimeException e) { try { oos.writeObject(res); } catch (IOException e1) { e1.printStackTrace(); } } } private void changeInformationHandle() { try { User user=(User)ois.readObject(); Response res=new Response(RequestType.changeInformation); try { dao.updateUser(user); res.setData(1);//修改成功返回值带一个整形值 oos.writeObject(res); oos.flush(); } catch (RuntimeException e) { oos.writeObject(res);//失败则返回值不带参数 oos.flush(); e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } private void exitHandle() { try { s.close(); } catch (IOException e) { e.printStackTrace(); } } //发送文件 private void sendFileHandle(Request req) { // try { // User u=(User)ois.readObject(); // // } catch (Exception e) { // e.printStackTrace(); // } } //接受文件 private void receiveFileHandle(Request req) { 【基于JAVA的聊天系统设计与实现】 随着互联网的迅速发展,网络聊天系统已经成为人们日常生活中不可或缺的沟通工具,如Netmeeting、腾讯QQ、MSN-Messager等。本系统旨在设计并实现一个基于JAVA的聊天系统,它涵盖了网络聊天服务器程序和网络聊天客户端程序的构建,以满足多用户同时在线交流的需求。 1. **服务器程序模块** 服务器程序通过Socket套接字技术建立,使用Java的java.net.Socket类处理网络通信。服务器采用多线程技术处理多个客户端的并发请求,保证了系统的高效性和稳定性。当客户端发起连接请求时,服务器通过创建ServerSocket对象监听默认端口9527,并使用accept()方法接收连接。在接收到客户端请求后,服务器会为每个连接创建一个新的线程,用于处理该客户端的通信。 ```java public ServerController(Socket s) { this.s = s; } public void handle() throws Exception { ois = new ObjectInputStream(s.getInputStream()); oos = new ObjectOutputStream(s.getOutputStream()); // ... } ``` 2. **客户端程序模块** 客户端通过与服务器建立Socket连接,实现与服务器以及其他客户端的信息交互。客户端可以发送登录、注册、发送消息、接收文件等请求,所有请求通过自定义的数据包(Request)传输,服务器根据数据包类型执行相应操作。 3. **多线程与局域网通信** 为了支持多用户同时在线,服务器端的每个客户端连接都会创建一个独立的线程。这种设计充分利用了多线程技术,确保了服务的并行处理能力。此外,系统利用局域网通信机制,直接继承Thread类,简化了多线程的创建和管理。 4. **TCP/IP协议与Client/Server模式** TCP/IP协议是网络通信的基础,本系统基于TCP协议保证了数据的可靠传输。客户端/服务器端模式下,服务器作为服务提供者,负责接收和转发信息,而客户端则作为服务使用者,发起连接并发送请求。 5. **信息流处理** 在网络编程中,信息的读取和发送通过I/O流完成。系统使用ObjectInputStream和ObjectOutputStream类进行序列化和反序列化,确保对象能在网络中安全传输。例如,服务器端会读取客户端发送的Request对象,根据请求类型执行相应操作。 6. **数据库操作** 系统可能涉及到用户注册、登录等涉及数据库的操作,这里使用了DAO(Data Access Object)模式,通过IServiceDao接口与数据库进行交互,如修改用户信息、密码重置等。 7. **软件工程方法** 本项目遵循软件工程的开发流程,先快速构建系统原型,再逐步完善和优化。Eclipse作为开发环境,提供了便利的开发工具和调试支持,帮助开发者高效地完成系统开发。 总结来说,这个基于JAVA的聊天系统设计与实现了网络通信的核心机制,包括服务器端的多线程处理、客户端的请求发送以及TCP/IP协议的应用。通过精心设计的数据包和流处理,确保了信息的安全传输和高效交互。同时,该系统采用了现代软件工程方法,确保了代码的可维护性和扩展性。
剩余33页未读,继续阅读
- 粉丝: 7
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 20241226_243237026.jpeg
- f81f7b71ce9eb640ab3b0707aaf789f2.PNG
- YOLOv10目标检测基础教程:从零开始构建你的检测系统
- 学生实验:计算机编程基础教程
- 软件安装与配置基础教程:从新手到高手
- IT类课程习题解析与实践基础教程
- 湖南大学大一各种代码:实验1-9,小班,作业1-10,开放题库 注:这是21级的,有问题不要找我,少了也不要找我
- 湖南大学大一计科小学期的练习题 注,有问题别找我
- unidbg一、符号调用、地址调用
- forest-http
- christmas-圣诞树代码
- platform-绿色创新理论与实践
- christmas-圣诞树
- 数据分析-泰坦尼克号幸存者预测
- 字符串-圣诞树c语言编程代码
- learning_coder-二叉树的深度
- 1
- 2
- 3
- 4
前往页