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

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

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

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

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

3、。用户客户端接服务器日志数据通信信息本设计有全套完矍的资科:包括源程序、数据库(说明书”答辩PPT尊蘇QQ : 1415736481荻取!也可代做其它题目的毕业设计二. 背景知识SOCKETSocket可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket在应用程序中创建,通过绑定与网络驱动建立关系。此后,应用程序送给 Socket的数据,由 Socket交网络驱动程序向网络上发送出去。计算机从网络上收到与该 Socket绑定IP地址和端口号相关的数据后,由网络驱动程序交给Socket,应用程序便可从该Socket中提取接收到得数据,网络应用程序就是这样通

4、过Socket进行数据的发送与接收的(1)创建 Socket;(2)打开连接到 Socket的输入/出流;(3)按照一定的协议对 Socket进行读/写操作;(4)关闭 Socket.10技术阻塞模式可能造成阻塞的函数有:connect()、accept。、读写函数C/S两端通过Socket机制进行连接客户端的编程流程:a创建Socket对象,向Server的监听端口请求;b通过向新Socket中读写数据与 Server端通信;c关闭Socket,结束与Server端;(2)服务器端的编程流程:1打开Server Socket,创建一个服务器型套接字和一个普通套接字,服务器型套接字在指定端口为

5、客户端请求的Socket服务;2等待来自客户端的 Client端的请求;3接收Client端的请求,用返回的Socket建立连接;4通过向Socket中读写数据来与 Client端通信;5关闭Socket,结束与当前Client端的通信;6关闭SerketSocket对象结束监听服务。三. 客户端设计客户端主要完成建立连接、消息输入、消息发送、消息存储功能。功能含义如下:1. 建立连接:建立一个 ServerSocket连接,不断侦听是否有服务端连接或者断开连接。2. 消息输入:根据用户输入的消息,将消息显示在屏幕面板上。3. 消息发送:把用户输入的消息作为字符串通过Socket端口发送到服务

6、器。4. 消息存储:把用户输入的消息存储到data.txt文件中,以便用户以后查阅聊天记录。客户端设计如下:1. 界面设计2. 连接设计3. 接收信息设计4. 用户信息设计5. 帮助设计客户端用户设计的IP地址和端口号连接到相应的服务器,通过接收用户输入的消息,然后通过所监听的端口把消息发送到服务端,由服务端把消息发送到指定的用户用户连接服务器1客户端请求连接客户端通过connect()请求连接,填写端口号以及IP地址,填写自己的信 息。2服务器端响应服务器端的监听器监听到客户端的连接请求后,检测后允许客户端连接到服 务器。3给客户端返回信息连接成功后服务器返回给客户端连接成功的信息,并且给所

7、有的用户发送用 户登录信息。4关闭Socket连接当以上的程序都正常运行后,需要关闭 Socket连接,否则将会浪费服务器与 客户端之间的资源。5用户退出5.1接收退出信息当用户退出时,客户端将会用基于Socket的对象输出流发送给服务器退出对 象。5.2在线列表中删除用户用户退出后应该把用户从在线列表中删除,否则用户退出用户还在在线列表 中,那么该用户下次将会无法登录。5.3更新在线列表用户退出后将服务器端监控界面的用户列表更新。否则用户数据将会不同步C四. 客户端主要代码* 事件处理*/publicvoidactio nPerformed(Actio nEvent e) Object ob

8、j = e.getSource();if (obj = userItem | obj =/调出用户信息设置对话框UserC onf userC onf =userButton) /用户信息设置newuserC on f.setVisible( userName = userC onf.trueuserI nputNameUserCo nf();this , userName );elseif (obj = conn ectItem | obj =conn ectButt on) / 连接服务端设置/调出连接设置对话框Conn ectC onf conConf = conCon f.setVis

9、ible( userI nputlp;userI nputPorttruenew Conn ectC onf();this,ip , port );=conConf.=conConf.(obj =Conn ect();(obj = logoffItemDisCo nn ect();showStatus .setText( (obj =ip :portelseifelseifelseif try elseif送消息logi nltemdataltemFile read=II obj =II obj =logi nButt onlogoffButton) /登录/注销);)new File( ge

10、tDesktop catch (IOException e1) e1.pri ntStackTrace();Desktop.data.txt);().ope n( read);(obj =clie ntMessage| obj =clie ntMessageButt on/发Sen dMessage();clientMessage.setText( );elseif (obj = int j=JOpti onPane.this ,真的要退出吗IlliexitButt on| obj =showC on firmDialog ?,”退出”,exitItem ) / 退出(JOptio nPane

11、. if (j = JOpti onPane. if (type = 1)YES_OPTION ,JOptionPane. QUESTION_MESSAGE);YES_OPTION )DisCo nn ect();System. exit (0);elseif (obj =/调出帮助对话框Help helpDialog =helpDialog.setVisible(helpItem ) /菜单栏中的帮助new Help( this );true );publicvoid run()while (! socket .isClosed() try String type = (Stri ng)if

12、 (type.equalsIgnoreCase(系统信息)String sysmsg = (Stri ng) SimpleDateFormatSimpleDateFormat( yyyy-MM-dd HH:mm:ssin put);.readObject();in put .readObject();sdf=newStri ng ly_time=sdf.format(textarea.appe nd(ly_time);textarea.appe nd(n);textarea.append(系统信息: (type.equalsIg no reCase(+sysmsg);elseif服务关闭out

13、put.close();in put.close();socket.close();textarea.append(服务器已关闭!n);break ;(type.equalsIg no reCase(elseif聊天信息String message = (Stri ng)SimpleDateFormatSimpleDateFormat(yyyy-MM-ddHH:mm:ssStri ng ly_time=sdf.format(textarea.appe nd(ly_time);textarea.appe nd(n);textarea.appe nd(message);try record= new BufferedWriter(new FileWriter(record.write(ly_time);record.n ewLi ne();record.write(message);record.n ewLi ne();record.close(); catch (IOException e) e.pri ntStackTrace();elseif(type.equalsIg no reCase(用户列表String userlist=(Strin g));)new

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

当前位置:首页 > 办公文档 > 活动策划

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