局域网聊天系统的设计与实现毕业设计论文内容摘要:
sFree归还 COMPVARS所占用的资源。 VC++ 简介 我们通常所说的 Visual C++实际上是一个完善的、非常强大的 C++程序开发环境,它的名字是 Microsoft Developer Studio。 二者之间的细小差别并不重要,通常这两个术语可以互换。 但如果你不围绕 Developer Studio 来进行学习,就不能有效地使用 Visual C++( Developer Studio 听起来很像 Visual Studio , 但它们之间没有关系)。 它包含: C++编译器、调试器、应用程序框架 生成器、项目管理器、设计和实现菜单等资源的编辑器等等。 局域网聊天系统的设计与实现毕业设计 13 第三章 系统功能分析 系统功能模块图 图 系统功能模块图 文字聊天 文字聊天采用的是 TCP 模式,包括服务器端( server) 和客户端 (client)。 首先启动服务器端,客户端通过用户名和密码登录服务器,服务器响应客户端登录并提示有用户登录,此时两个用户就可以进行文字聊天,在文字聊天时信息通过服务器中转,而每个用户可以同时与多个用户进行文字聊天。 当有用户退出时,服务器做出响应,提示在线用户 ,下线用户。 文字聊天流程图如图。 局域网聊天系统的设计与实现毕业设计 14 图 文字聊天流程图 语音视频聊天 语音视频聊天时采用的是 UDP 模式,客户端与客户端点对点的进行,不需要经过服务器端中转。 在文字聊天的基础上,客户端之间可以进行自行处理的语音视频聊天,运用VFW 函数库中的函数对 USB 口输入的数字视频信息进行相关处理 ,比如 :视频捕获、影像压缩以及影像播放等,同时利用线程来处理声音部分的录制、回放等。 A客户端向 B 客户端请求语音视频聊天是通过 B客户端的用户名来获得 B客局域网聊天系统的设计与实现毕业设计 15 户端的 IP 地址,并向 B客户端发送语音视频聊天请求,当 B客户端接受后捕获视频,并进行压缩传输到 A客户端解压并进行播放,在 B 客户端接受视频的同时,A客户端也捕获视频,压缩传输到 B客户端解压并进行显示。 语音视频聊天流程图如图。 图 语音视频聊天流程图 局域网聊天系统的设计与实现毕业设计 16 系统特点 程序较小,启动速度快。 启动后的应用界面要清爽,设计要简单明了,具有较高的易用性。 在遇到可预知的故障与情况时,能提示用户并自动退出。 在遇到不可预知的故障时能安全退出。 运行环境 硬件环境: 计算机两台,如下: CPU: 1GHz 以上 内存: 256MB 以上 硬盘 : 20GB 以上 其它:分别配有摄像头、麦克风、音响或者耳机等外部设备 软件环境: Windows XP/7 操作系统 Microsoft Visual Stdio 性能需求分析 1. 可靠性高 能在由于系统问题或其它原因产生错误后,作出相对应处理,比如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现不可知的错误以后,可以尽量安全的退出程序。 在程序的设计过程中,要求能尽可能多的 设想到用户使用过程中可能发生的事件,并能在判断事件后做出相应的处理,使程序具有较高的容错性能。 2. 宜操作性,程序简单易懂,用户能很容易看懂并使用。 局域网聊天系统的设计与实现毕业设计 17 界面设计 服务器登录界面 图 服务器登录界面 用户登录界面 图 用户登录界面 局域网聊天系统的设计与实现毕业设计 18 用户登陆后界面 图 用户登录后的界面 第四章 详细设计及编码实现 局域网聊天系统的设计与实现毕业设计 19 TCP 套接字的运用 在文字聊天时 ,服务器端与客户端的连接是采用的 TCP 套接节进行连接。 TCP套接字的使用如下图。 创建 CSocket 对象 CSocketServer 来处理服务器端与客户端的连接, CSocket 继承于 CasyncSocket,是 Windows Socket API 的高层抽象。 CSocket 通常和 CsocketFile 以及 Carchive 类混合使用,这两个类负责数据的发送和接收。 要使用 CSocket 对象,首先要调用构造函数,然后调用 Create函数创建一个 Socket 句柄。 CSocket 函数缺省是创建一个流 Socket;如果没有使用 CArchive 类,那么还可以创建一个数据报 Socket。 服务器端调用 Accept,客户端调用 Connect,然后创建一个 CsocketFile 去关联 CSocket。 接下来的操作可 以创建 CArchive 对象关联 CsocketFile,以用来发送和接收数据。 图 TCP 套接字的运用图 文字聊天的实现 局域网聊天系统的设计与实现毕业设计 20 ChatServer 服务器运行时,利用一个 CSocket 对象 CSocketServer 启动服务器,用函数 gethostname 来获得服务器端主机名和 IP,同时在服务器对话框中显示服务器 IP,并将分配的固定端口号 8123 显示在对话框中。 用一个 list列表显示在线用户,随时更新用户登录情况,用一个 edit box 显示客户端的聊天内容以 及系统提示消息。 每一个 ChatClient 客户端启动时,利用服务器内定的用户号和密码来登录。 在整个系统中,利用链表来处理所有的用户信息:当有用户登录时,在链表尾部加入该用户信息;当用户下线时,在该链表中删除用户,并提示所有用户,该用户下线。 在对链表进行操作的同时,要更新 list 列表中的信息。 图 需要使用指定的用户名密码登录 图 服务器运行后界面 局域网聊天系统的设计与实现毕业设计 21 当用户登陆后服务器显示了该用户的登录,并 且记录了当前在线用户的人数。 用户之间两两间进行文字聊天时,发送信息的处理函数如下: void CChatClientDlg::OnChatBtSend() //发送信息按键 { if( !m_bConnect) { SetMessageBox(请连接服务器 !\r\n)。 return。 } CString str。 CString szUserName。 CMesg msg。 GetDlgItemText(IDC_MESSAGE,str)。 GetDlgItemText(IDC_USERNAME,szUserName)。 if( () = 0 ) { SetMessageBox(请输入想要发送的信息 !\r\n)。 return。 } if ( () = 0) { SetMessageBox(请选择说话对象 !\r\n)。 return。 } //消息封装 (Message)。 (szUserName)。 (str)。 m_csClientSendM(amp。 msg)。 局域网聊天系统的设计与实现毕业设计 22 AddReceiver(szUserName , true)。 AddChatMessage(str)。 } 下图为两个用户之间的文字聊天以及服务器上的显示 图 用户 heteng 对 aaa发送的文字信息 图 用户 aaa接受到 heteng所发出的文字信息 局域网聊天系统的设计与实现毕业设计 23 图 服务器所显示两个 用户之间的文字对话 语音视频聊天的实现 在实现语音视频聊天时 ,采用的是基于 UDP 套接字的点对点模式 ,即用户与用户之间的数据传输。 其套接字的使用如下图。 局域网聊天系统的设计与实现毕业设计 24 图 语音视频聊天套接字图 视频的捕捉 利用 VFW 接口,视频捕获可以分为以下几个步骤: 1. 建立视频采集窗口:该窗口用来接收视频捕捉驱动程序传来的数据和消息。 2. 连接视频驱动程序:将建立的视频捕捉窗口与视频设备驱动程序相连。 3. 视频捕获初始化。 4. 视频捕捉设置: VFW 下视频捕捉 参数的设置可以通过调用函数或弹出对话框的形式来实现。 一般视频驱动程序允许设置的参数包括视频源选择、视频格式、视频显示格式等。 5. 设置回调函数:通过回调函数来通知程序视频事件的发生,比如捕捉一局域网聊天系统的设计与实现毕业设计 25 帧图像成功的消息,捕捉出错的消息等。 6. 结束捕捉:结束捕捉是应该有一些清除工作。 如释放分配的内存,断开捕捉窗口与视频捕捉驱动程序的连接,清除视频捕捉窗口等。 窗口类为捕获数字视频流及其相关操作提供了很大的方便,灵活编写其中的回调函数可满足实时视频传输的需要,例如应用程序可直接从缓冲中取得数字视频并对其进行压缩编码 后实时地传到远端的客户端。 在 VC++中,采用 VFW 技术,客户端通过 capSetCallbackOnFrame()注册回调函数,当采集卡采集到一幅图像后,系统就会自动调用回调函数,然后再回调函数中使用 ICSeqCompressFrame()函数进行压缩。 然后再通过 Winsock 将压缩后的数据发送到另一客户端。 该客户端接收完一帧以后,交给 ICDepress()解压,最后用 SetDIBitsToDevice()将图像显示出来。 基本的捕获设置包括设置捕获速度(每秒捕获多少帧)、是否同时捕获声频、捕获缓冲、 允许最大丢失多少帧和是否使用 DOS 内存,以及使用键盘的哪个键或鼠标的哪个键来终止捕获等内容,这些设置使用 CAPTUREPARAMS 结构来描述,capCaptureGetSetup 宏来得到当前的设置,然后改变此结构的成员变量,再使用 capCaptureSetSetup 宏设置新的设置。 设置捕获速度,通过使用 capCaptureGetSetup 宏来得到当前的捕捉速度,将当前的捕捉速度保存在 CAPTUREPARAMS结构的 dwRequestMicroSecPerFrame成员变量中,也可以通过设置此变量来改变当前 设置值。 设置终止捕获,同样通过使用 capCaptureGetSetup 宏来得到当前的设置,当前按键设置保存在 CAPTUREPARAMS 结构的 vKeyAbort 成员中,鼠标设置保存在fAbortLeftMouse 和 fAbortRightMouse 成员中,通过修改可以设置新的热健或者鼠标左右键,修改完成后,使用 capCaptureSetSetup 宏来进行更新。 捕获的时间限制,用 CAPTUREPARAMS 结构中的 fLimitEnabled 表示捕获是否有时间的限制, wTimeLimit 用来设置指示捕获最大的持续 时间,其单位为秒。 使用 capCaptureGetSetup 宏来得到当前的设置值。 下面程序为设置 CAPTUREPARAMS 结构的实现代码: BOOL VideoCapture::SetCapturePara() { 局域网聊天系统的设计与实现毕业设计 26 CAPTUREPARMS CapParms={0}。 capCaptureGetSetup(m_capwnd,amp。 CapParms,sizeof(CapParms))。 //得到当前的捕获速度 = FALSE。 = FALSE。 = TRUE。 = FALSE。 = 80。 if(!capCaptureSetSetup(m_capwnd,amp。 CapParms,sizeof(CapParms))) { // (\n Failed to set the capture parameters )。 return FALSE。 }。局域网聊天系统的设计与实现毕业设计论文
相关推荐
礼障伊世赎牡核蔚烫寂玉十殃睁挖假鄂 3) 按学校教务处下发的毕业设计(论文)手册模版撰写并打印装订成册的毕业设计(论文)手册一本。 山东理工大学化工学院毕业论文、设计指导手册 01 山 东 理 工 大 学化 学 工 程 学 院毕业论文设计指导手册二 0一一年二月目 录一、化学工程学院毕业论文(设计)实施办法 2二、化学工程学院毕业论文指导教师考勤办法 7三
装企业的充分肯定。 23 联合申报单位项目负责人基本情况: 姓名 邢旭佳 性 别 男 出生年月 1978 年 11 月 最终 学历 本科 专业技 术职务 副教授 手机 13957799418 学位 工学学士 职业资 格证书 技师 传真 所在 部门 轻工系 职 务 教师 电子 邮箱 通信地址(邮编) 浙江省温州茶山高教园区温职院轻工系( 325035) 教学与技术专长 服装结构与工艺 工作简历(
uint8 i。 uint8 m。 int n=1。 //1 关总中断 DisableInterrupt()。 //禁止总中断 //2 芯片初始化 MCUInit()。 //3 模块初始化 Light_Init(Light_Run_PORT,Light_Run,Light_OFF)。 LCDinit()。 TPMinit(TPM_NUM_1)。 SCIInit(SCI_NUM_1
根据机床选取 fa = V=60508 zaaaT kd pfe v 0d =50, vk =1,T= s=180(min), ea =1 pa =46,Z=8, fa = sv = =(m/min) sn =01000dvs =(r/min) 由表 — 74 查得主轴转速 wn =60(r/min) 实际加工速度 V= 1000wwnd = 1000 =(r/min)
P2 供应商 进货处理 P3 D1 入库单 D3 库存记录 F1订单 F2提货单 F4供货单 F3 订货单 F10销售单 F7入库单 F7入库单 F9库存量 F11 缺货单 F11 缺货单 D2 出库单 F8出库单 F8出库单 总经理 F6 指导信息 图 系统顶层图 Fig The Peak F6 指导信息 统计分析 P4 F7入库单 F9库存量 F8出库单 华东师范大学学士学 位论文
评价等) 另: (如果你还有什么要写上去的,请填写在这里。 ) * 附言 :(请写出你的希望或总结此简历的一句精炼的话 !) 例如 :相信您的信任与我的实力将为我们带来共同的成功 ! 或希望我能为贵公司贡献自己的力量 ! 简历模板(十)标准简历 (简历模板 ) 内容 个人概况 : 求职意向。 ________________ 姓名 : ________________ 性别 : ________