internet课程设计

internet课程设计

ID:9389835

大小:345.94 KB

页数:13页

时间:2018-04-29

internet课程设计_第1页
internet课程设计_第2页
internet课程设计_第3页
internet课程设计_第4页
internet课程设计_第5页
资源描述:

《internet课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、一、课程设计目的了解C/S模型,熟悉常见的WINSOCKAPI函数,它是微软提供的网络编程接口函数,利用它,应用层程序可以跟TCP/IP协议打交道,用WINSOCKAPI函数设计一个面向连接的通信程序。二、课程设计任务1.具有聊天界面。2.分为TCP聊天服务器和TCP两天客户端两个模块。3.用WINSOCKAPI编程接口函数和多线程实现,支持多客户连接服务器。三、设计方案1.服务器端和客户端功能设计一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有很多个服务器端。客服端要具有实现用户注册和用户登陆,在登陆成功后,要显示出公聊界面,

2、实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户列表名,并且可以和在线的用户实现一对一的私聊功能。在服务器端可以实现不断的监听客服的连接,并且根据客户端发送过来的不同信息如注册信息,登录信息,公聊信息,私聊信息,退出信息等,服务器端要做出不同的响应。(1)服务器端功能:·可以不断的监听客户端请求·服务器开启状态、显示登陆客户的信息、用户在线列表·发送系统消息(2)客户端功能模块图如图3.1所示:·用户登录功能,实现合法注册用户的登陆。·私聊功能,实现用户和在线的其他用户一对一的聊天

3、方式。·公聊功能,实现用户和在线的所有用户聊天方式2.系统实现设计当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒

4、刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。图1系统实现原理图3.系统的设计过程(1)用户的登录/退出用户发送登录请求,客户端获取用户登录信息并发送到服务器端,服务器启动用户登录管理线程,获取用户名和密码进行登录验证,将验证结果返回客户端显示,下图为普通用户登录/退出系统的时序图:图2登录退出系统时序图(2)发言发言是聊天

5、室的核心功能,用户提出发言请求,客户端接受发言的内容和其他各种设置(公聊或私聊),打包发给服务器端。服务器接收到请求后确定聊天方式。服务结果最后显示在客户端。下图为发言的时序图。图3发言时序图一、算法或框图、关键代码说明1.算法或框图聊天室的总体设计过程,就是当客户端发出信息时,我们将数据写到socket,当对方有数据到达时,我们从socket读出来并显示给客户。程序关键在于如何监听到有信息到达的过程。应用程序流程图如下图所示,开始是先创建主窗口,然后初始化窗口,程序下面才开始消息循环处理。如果没有消息循环的活,直接结束掉这个程序。如果有循环的

6、话,要判断这个窗口消息的内容是哪种类型,然后再进行选择处理方式。图4应用程序流程图2.关键代码说明①ChartServer.Java中,针对每一个客户端的连接请求的处理代码:publicclassChatHandlerimplementsRunnable{protectedClientInfoclientInfo=newClientInfo();//用户信息protectedSocketsocket;//套接字protectedObjectInputStreamin;//对象输入流protectedObjectOutputStreamout;/

7、/对象输出流protectedThreadlistener;//指定的用来处理用户的线程publicChatHandler(intclientID,Socketsocket){clientInfo.clientId=clientID;//客户端口号this.socket=socket;protectedbooleanhandShake(){//握手过程中设置参数clientInfo.clientName=(String)in.readObject();if(window.clientList.size()>0&&window.clientLis

8、t.indexOf( clientInfo.clientName)!=-1){ConnectionNoticestatus=newConnection

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。