Java网络聊天室课程设计说明书(含源程序)

上传人:壹****1 文档编号:430991521 上传时间:2023-01-11 格式:DOC 页数:18 大小:262KB
返回 下载 相关 举报
Java网络聊天室课程设计说明书(含源程序)_第1页
第1页 / 共18页
Java网络聊天室课程设计说明书(含源程序)_第2页
第2页 / 共18页
Java网络聊天室课程设计说明书(含源程序)_第3页
第3页 / 共18页
Java网络聊天室课程设计说明书(含源程序)_第4页
第4页 / 共18页
Java网络聊天室课程设计说明书(含源程序)_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《Java网络聊天室课程设计说明书(含源程序)》由会员分享,可在线阅读,更多相关《Java网络聊天室课程设计说明书(含源程序)(18页珍藏版)》请在金锄头文库上搜索。

1、操作系统课程设计报告 目录一 设计要求和目的3二 背景知识4三 客户端设计5四 客户端主要代码6五 设计体会9摘要随着网络信息时代的来临,Internet应用越来越广泛人们越来越习惯于在网上获取和交流信息。据调查显示,80%以上的人上网都会翻开聊天工具来聊天,而几乎每一个年轻人都会去聊天。使用网上聊天已经成为现代年轻人一种新的交往方式。聊天室更适合于陌生人之间进行较为主观、感兴化的讨论。所以有大局部的人会进入聊天室聊天它会给人一个完全自由的聊天世界。因此我们联系所学的操作系统、数据库和MFC知识决定做一个简易的聊天系统。一、 设计要求和目的此课题是实现一个即时通信系统完成 1:进程间通信、并发

2、(同步/互斥)、文件读写 2:内存管理、Dll、Windows消息机制、IO。课题任务分工: 客户端子系统:在客户端系统的功能实现上,可以分为以下几个局部: 1进程信息的输入 系统把用户进程要求发送的信息由键盘输入从文件读取。这局部功能是客户端子系统的根本局部,这个功能是以后各个局部的根底。系统要求做到即能够从其它子系统中共享一局部信息2进程信息的存储: 将进程的信息存储到客户端系统中,以及将发送的信息保存在文件中,以备以后进程之间通信确认以及查询。 3通信数据的传递及接收: 将客户所发送的信息由客户端由网络传到效劳器端上,并且接受航效劳器返回的接收方发送的信息,然后存储起来。二 背景知识SO

3、CKET Socket可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket在应用程序中创立,通过绑定与网络驱动建立关系。此后,应用程序送给Socket的数据,由Socket交网络驱动程序向网络上发送出去。计算机从网络上收到与该Socket绑定IP地址和端口号相关的数据后,由网络驱动程序交给Socket,应用程序便可从该Socket中提取接收到得数据,网络应用程序就是这样通过Socket进行数据的发送与接收的1 创立Socket;2 翻开连接到Socket的输入/出流;3 按照一定的协议对Socket进行读/写操作;4 关闭Socket. IO技术 阻塞模

4、式 可能造成阻塞的函数有:connect()、accept()、读写函数C/S两端通过Socket机制进行连接(1) 客户端的编程流程: a创立Socket对象,向Server的监听端口请求; b通过向新Socket中读写数据与Server端通信; c关闭Socket,结束与Server端; (2)效劳器端的编程流程: 1翻开Server Socket,创立一个效劳器型套接字和一个普通套接字,效劳器型套接字在指 定端口为客户端请求的Socket 效劳; 2 等待来自客户端的Client端的请求; 3接收Client端的请求,用返回的Socket建立连接; 4通过向Socket中读写数据来与Cl

5、ient端通信; 5关闭Socket,结束与当前Client端的通信; 6关闭SerketSocket对象结束监听效劳。三 客户端设计客户端主要完成建立连接、消息输入、消息发送、消息存储功能。功能含义如下:1. 建立连接:建立一个ServerSocket连接,不断侦听是否有效劳端连接或者断开连接。2. 消息输入:根据用户输入的消息,将消息显示在屏幕面板上。3. 消息发送:把用户输入的消息作为字符串通过Socket端口发送到效劳器。4. 消息存储:把用户输入的消息存储到data.txt文件中,以便用户以后查阅聊天记录。客户端设计如下:1. 界面设计2. 连接设计3. 接收信息设计4. 用户信息设

6、计5. 帮助设计客户端用户设计的IP地址和端口号连接到相应的效劳器,通过接收用户输入的消息,然后通过所监听的端口把消息发送到效劳端,由效劳端把消息发送到指定的用户用户连接效劳器1客户端请求连接 客户端通过connect()请求连接,填写端口号以及IP地址,填写自己的信息。2效劳器端响应 效劳器端的监听器监听到客户端的连接请求后,检测后允许客户端连接到效劳器。3给客户端返回信息 连接成功后效劳器返回给客户端连接成功的信息,并且给所有的用户发送用户登录信息。4关闭Socket连接 当以上的程序都正常运行后,需要关闭Socket连接,否那么将会浪费效劳器与客户端之间的资源。5用户退出 当用户退出时,

7、客户端将会用基于Socket的对象输出流发送给效劳器退出对象。 用户退出后应该把用户从在线列表中删除,否那么用户退出用户还在在线列表中,那么该用户下次将会无法登录。 用户退出后将效劳器端监控界面的用户列表更新。否那么用户数据将会不同步。四 客户端主要代码/* * 事件处理 */public void actionPerformed(ActionEvent e) Object obj = e.getSource();if (obj = userItem | obj = userButton) /用户信息设置/调出用户信息设置对话框UserConf userConf = new UserConf(

8、this,userName);userConf.setVisible(true);userName = userConf.userInputName;else if (obj = connectItem | obj = connectButton) /连接效劳端设置/调出连接设置对话框ConnectConf conConf = new ConnectConf(this,ip,port);conConf.setVisible(true);ip = conConf.userInputIp;port = conConf.userInputPort;else if (obj = loginItem |

9、 obj = loginButton) /登录Connect();else if (obj = logoffItem | obj = logoffButton) /注销DisConnect();showStatus.setText();else if(obj = dataItem)tryFile read=new File(data.txt);Desktop.getDesktop().open(read);catch (IOException e1)e1.printStackTrace();else if (obj = clientMessage | obj = clientMessageBu

10、tton) /发送消息SendMessage();clientMessage.setText();else if (obj = exitButton | obj = exitItem) /退出int j=JOptionPane.showConfirmDialog(this,真的要退出吗?,退出,JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION)if(type = 1)DisConnect();System.exit(0);else if (obj = helpItem) /菜单

11、栏中的帮助/调出帮助对话框Help helpDialog = new Help(this);helpDialog.setVisible(true);public void run()while(!socket.isClosed()tryString type = (String)input.readObject();if(type.equalsIgnoreCase(系统信息)String sysmsg = (String)input.readObject();SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); St

12、ring ly_time = sdf.format(new Date();textarea.append(ly_time);textarea.append(n);textarea.append(系统信息: +sysmsg);else if(type.equalsIgnoreCase(效劳关闭)output.close();input.close();socket.close();textarea.append(效劳器已关闭!n);break;else if(type.equalsIgnoreCase(聊天信息)String message = (String)input.readObject();SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); String ly_time = sdf.format(new Date();textarea.append(ly_time);textarea.append(n);textarea.append(message);tryrecord=new BufferedWriter(new FileWriter(data.txt,true);record.write(ly_time);record.newLine();record.write(message);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号