成都工业学院计算机络专周报告_第1页
成都工业学院计算机络专周报告_第2页
成都工业学院计算机络专周报告_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、成都工业学院计算机络专周报告成都理工大学课程设计报告课程名称计算机网络课程设计项目名称基于套接字的网络聊天系统 的设计与实现姓氏名称班级 1506041 学校编号 1501352247讲师周星老师设计时间需求 分析31.1 发展 背景 3 1.2 功 能 要求 3 1.3 操 作 环境 3 1.4 功 能 实现 32. 项 目 设计 4 2.1 程 序 流 程图 4 2.2 外 形 设计 5 2.3功 能 设计 2.4详 细设计 7 接口设计7客器 9 2.4.2程序结构设计 83.代码和注释 93.1、客户 .93.2服务器 .154.课 程设计概述 .175.参考1721。需求分析1.1

2、发展背景 随着网络技术的成熟,人们对网络的依赖程度不断提高,网络似乎 已经成为生活中不可或缺的存在由此产生的聊天工具也在增长微信 和 QQ 等网络聊天工具发展迅速。 然而,现有的聊天程序仍有改进的 空间。QQ 一直受到人们的喜爱。随着版本的不断更新,尽管其功能不断 增加和改进,但仍有许多小问题有时难以忍受。在使用过程中,连续 弹出的窗口和广告极大地影响了用户对照片的使用。 因此,受本课程 设计的启发,我想出了制作类似 QQ 的在线聊天工具和 “无垃圾邮件 的干净聊天工具的想法。 虽然这个工具并不完美, 但我希望通过制作这个程序,我能更好地学习计算机网络知识。1.2 功能要求(1)登录功能(2)

3、用户可以通过服务器转发实现私人聊天和多人聊天(3)实现抖动和语音提醒(4)服务器和客户端程序都可以实时显示在线用户的数量(5)应有友好、易用、美观的图形界面 (6)无垃圾广告信息(7)保存和删除聊天信息1.3 操作环境操作系统版本 :窗口 10 64 位软件版本 :Visual studio 20151.4 函数实现1。登录验证功能对于账户重复等例外情况,系统会提示用户。 2.客 户端通过服务器转发,实现私人聊天和多人聊天3。实时显示其他用户的当前状态, 并可以提示在线用户的数量和状 态等。 4.保存并查看聊天记录 5.申请新的用户号码6。易于使用和美观的图形界面实现系统托盘 7.当接收到信息

4、时, 发 送者可以接收诸如语音等提示信息。 发送者也可以通过发送抖动来提 示聊天伙伴。2。项目设计2.1 程序流程图服务器 sockbindlist 接受接收发送close客户端套接字连接发送接收关闭 42.2 概要设计通过C#,实现网络聊天的功能,使用 Windows Socket编程,服务器和客户端使用 TCP/IP 连接方式,在聊天方案的设计中,实现发送所 有信息的思想因为服务器端需要保存用户信息, 我们使用数据库来实现这个功能, 所以我们需要先建立用户信息数据库。采用文件系统设计,实现了在客户端保存聊天记录和用户号码的功 能。当信息到达并且朋友上线时, 通过闪烁托盘图标和播放不同的音

5、乐来提示。建立消息链表,存储用户接收的各种消息2.3 功能设计客户端:1)登录功能 :与服务器建立连接并登录,可以显示登录错误信息 2)界 面显示 :在线好友显示在好友列表中,实现系统托盘 3)聊天功能 :与朋 友聊天4)聊天记录 :可以保存聊天记录和查看聊天记录5)信息提示 :闪烁托盘图标提示到达信息,播放不同的音乐提示6)窗口抖动 :发送方提示聊天方客户端登录服务器申请新的号码显示。在线用户 接收各种信息,保存聊天记录,保存用户号码 服务器:向客户端发出系统消息 接受来自客户端的信息并对其进行处理1)登录信息 : 检查登录信息是否正确,并将登录信息返回给客户端如 果信息正确,线上的用户将被

6、发送给该用户,并且该用户的状态将被发送给每个 在线用户。同时在服务器端52)聊天信息 :转发给消息中指定的用户3)申请信息 :系统将自动分配 8 位用户号码,保存用户,并将信息返 回给客户 4)用户注销 :将该用户注销消息发送给每个客户端,并在服 务器端重写用户的状态服务器端处理应用信息转发聊天信息发布系统消息处理登录信息程序中的主要变量和函数描述如下 : 客户端:private void log in _ BTN _ click(object sender , eventargse)登录至U服务器private void svrp _ TB _ text cha nged(object se

7、n de, Eve ntarge设置地 址端口 eve nt arge-显示由好友 private void send _ BTN _ click(object sender, EventArgs e)发送 的消息 private void user _ TB _ text changed(object sende,r EventArgs e) -申请新用户private void chat rcd _ rtb _ text changed(object sende,r EventArgs e) - 显示服务器消息 private void msg _ TB _ text changed(ob

8、ject sender, EventArgs e) -显示消息输入文本private void wedge _ Pb _ click(对象发件人,EventArgs e)事件目标)- 聊天模式的更改privatevoid _ cb _ checked已更改(对象发送者,事件 目标 - 最小化到托盘服务器端 :用户和发送信息结构类型 :公共 void 启动 ()-服务器启动。和实时更新用户在线信息公共void getconfig()-配置信息如服务器端口号私有 void thread fund(object obj)- 系统发送消息、 公共无效关闭 ()-关 闭服务器62.4详细设计 接口设计客

9、户端1)登录接口2)显示当前状态3)最小化到托盘4)发送抖动4)客户 :82。服务器是控制台程序3。代码和注释3.1,clienta)登录函数private void log in _ BTN _ click(object sender, eventargse) /验证数据合法性,如果 (!idspninfopath f941 f941 f941 f941 f941 ValidateInfo() 返回;int端口二int。解析(svrport_tb。文本);发送连接请求到服务器TCP connection conn = newtcp connection(_ IP add,r port); T

10、cpClient_tcpc =连接器。连接 ();如果(_ tcpc = = null)无法连接到服务器,请重试! , 错误 , 消息框按钮。确定,消息框图标。排除 ); 否则Networkstream netstream = _ tcpc GetStream(; 将用户名发送到服 务器以确认身份netstream.write(编码.unicode.getbytes (user _ tb.text), 0, encoding . unicode . get bytes(user _ TB . text。) 长度); /获取登录结果 字节缓冲区 =新字节50;netstream。读取(缓冲区,0

11、,缓冲区。长度);字符串连接结果二编码。Unicode.GetString(缓冲区)。三聚体(“ 0” ; 如果 (conn result . equals()messagebox . show(您的用户名已被使用,请尝试另一个用户名!,messageboxbuttons.o,k messagebox con . information;) 返回; 否则 字符串 svrskt = svrip _ tb。Text + + svrport_tb。文本;chat_frm chatFrm 二新建 chat_frm(用户 _tb。文本、网络流、svrskt)。 chatFrm。所有者二此;这个。隐藏()

12、;chatFrm。显示(); b)发送消 息函数private void send _ BTN _ click(object sender, eventargse)string textt = null; 字符串 sendTxt = null字符串 msg = msg_tb。文本。修剪(); 如果(msg = = string . empty)不能发送空消息 , 提示 ,10MessageBoxButtons好的,消息框图标。信息);返回;/如果是聊天室模式,发送广播请求if (broadcast_rb。选中)localTxt =字符串。格式( broadcast您在0: r n 1 r n

13、r,datetime .now, msg)上对所有人说过。send txt = string . format( broadcast 0 在1 上对每个人说 : r n, _ username, datetime.now, msg); /发送广播请求_ nws.write(新字节0,5,0, 2); 否则string _ receiver = online _ CB。文本;如果(_ receiver = = string . empty)messagebox .请选择一个接收器! n 如果没有收件人选项,您是当前唯一在线的人 ,发送消息 ,消息框按钮。好的,消息框图标。信息 );返回; local txt = string . format( private chat) 您在0对1说过的话: r , datetime.now, _ receiver, msg);send txt = string . format( private chat 0 于1对您说: r n 2 , _ username, datetime.now, msg); /发送方用户名_ NWS . write(encoding . unicode .

温馨提示

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

评论

0/150

提交评论