聊天系统设计与实现本科毕业论文(编辑修改稿)内容摘要:
同意连接,则返回给客户端同意信号,开启服务器的接收信息线程,并置消息发送事件为 Enable。 客户端收到服务器返回的同意信号后,也开启接收信息线程,并置消息发送事件为 Enable。 通信双方就可以进行文字聊天了。 若服务器端拒绝客户端的连接,则关闭 tcpconnect,并关闭网络流,继续执行监听。 客户端得知服务器端关闭 tcpconnect并关闭网络流之后,则释放本次 socket和网络流。 若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放 Socket和网络流,不影响到下一次连接的接入。 文本聊天服务器工作流程如图 6所示。 图 6文本聊天服务器程序流程图 连接服务器 服务器同意连接。 否 是 建立连接,允许发送消息事件, 启动接受信息线程 进行文字消息通信 开始 是 客户端接收消息 发送断开信号,关闭文本聊天 否 终止 停止接收 主 ip 关闭端口 是 否 山西大学商务学院本科毕业设计 10 文本聊天客户端工作原理 客户端用来向服务器端发起一个连接,等待服务器的允许接入 确认。 若服务器端同意连接请求,接收到服务器的同意连接信号后,开启接收信息线程,并置消息发送事件为 Enable,通信双方就可以进行文本聊天了。 若已建立连接,当断开连接时,将向对方发送断开信号,然后将释放Socket和网络流,不影响到下一次连接的发起。 P2P文本聊天 1) 功能概述 将文本聊天客户端和服务器模块,通过多线程技术,集成在一个聊天窗体里面,窗体加载时进行监听,有连接请求到达,则为服务器端;试图连接远程用户,则为客户端。 它是建立在TcpListener以及 TcpClient这两个类基础上 的。 程序实现的原理也比较简单,但是用到了 P2P技术 非中心化 的基本原则。 简言之,用这个程序可以在网络中发送、接受消息,任何一台计算机既可以作为服务器端,又可以作为客户端。 2) 集成文本聊天工作流程图 集成主窗体创建后,加载监听线程。 当 有接入连接请求,同意或拒绝接入请求,若同意,则按照文本聊天服务器模块工作流程执行。 当无接入请求,则判断是否有尝试连接远程服务端事件,若有,则按照文本聊天客户端模块工作流程执行,如图 7所示。 基于 C++的 FeiQ的山西达内公司局域网聊天系统设计与实现 11 图 7 P2P文本聊天程序流程图 3) 集成主窗体设计 主窗体是用来与用户交互用的,所以加载时间不能太长,响应速度应足够快,操作简单,设计人性化。 所以,设计的时候,采用了一些通俗易懂的图片和按钮。 当用户未输入文字而尝试发执行监听线程,监听端口 是 否 开始 有接入连接请求 是 是 否 否 连接服务器。 是 否 是否成功建立 开连接。 连接双方进行消息通信 是 终止 结束聊天 否 断开连接。 发送断开信号,关闭文本聊天 是 本地或远程服务端允许。 建立连接,信息线程 山西大学商务学院本科毕业设计 12 送时,弹出消息提示框,提示不能发送空信息,节省系统和网络资源。 表 1 文本聊天窗体主要控件属性表 控件 属性 值 GroupBox Name groupbox1 Text 信息显示 RichTextBox Name richTxtInfos Readonly TRUE RichTextBox Name richTxtSent Readonly FALSE Active KeyDown Button Name send Text 发送消息 Button Name clearbox Text 清除屏幕 Button Name savelog Text 消息记录 4) 具体实现 定义相关变量。 集成主窗体创建后,创建一个 tcpListener的对象,端口为 4000, IP为任意。 创建监听线程 wait, wait线程执行的是 waitconn()方法, 启动监听线程。 调用 getMyIP()方法用于获取本地 IP地址,并在连接建立时传给对方。 当 wait线程监听到远程用户的接入连接请求,弹出消息提示框,用户可以选择同意或拒绝接入请求。 若同意,则创建 接 收 信息线程 th,并 启动 th。 若用户拒绝远程接入请求,则关闭网络流 nss,关闭 tcps,并调用 disconnect()重新初始化相关变量。 接收信息时,尝试读取网络流,采用的是 Unicode编码。 读取到的消息如果不为断开连接信号,则在聊 天记录框里面显示出来;若为断开信号,则执行 disconnect()方法关闭当前连接。 当无接入请求,则判断用户是否有尝试连接远程服务端事件。 若有,创建 TcpClient的对象 tcpc,并尝试连接远程主机。 连接建立后,用户单击“发送消息”按钮或者在输入文本框内按热键“ Alt+S”或“ Ctrl+Enter”,触发 send_Click 事件。 send_Click 事件主要是将用户的输入通过 Socket,采用网络流的形式传输给远程用户,编码采用 Unicode,同时在聊天记录框里面显示出来。 断开连接或关 闭窗体,需要将 Socket、网络流以及接收信息线程 th进行关闭,重置各按钮的可用状态。 若是关闭窗体,还需将 wait线程关闭。 语音传输模块实现 语音传输模块概述 除了文本聊天以外,局域网内另外一个应用是语音传输。 出于可靠性和效率考虑,本模块也采用 TCP协议来进行用户之间文件的传输。 基于 C++的 FeiQ的山西达内公司局域网聊天系统设计与实现 13 文件传输接收端工作原理 语音实时传输是语音聊天软件的核心技术。 文中在分析语音实时传输原理的前提下,探讨了局域网语音实时传输的设备的初始化、内存分配、语音录制、播故和传输等具体方法,并以C++Builder6. 0提供的控件为基础,以 API函数给为工具,给出了局域网实时语音聊天的具体实例,实现了局域网聊天。 如图 8所示。 图 8 语音传输接收端程序流程图 语音传输发送端工作原理 开启窗体后,发送端选择用户需要发送的文件,向接收端发起的文件传输请求,若接收端端同意接收,开启计时器,将本地文件通过网络发送给接收端,并在文件传输过程中对文件传输状态进行反馈,文件发送完毕,关闭计时器,关闭文件流,并在状态栏上 显示出完毕状态。 若接收端拒绝接受文件,则取消本次文件发送,等待用户的下一次文件发送事件。 文件传输发送端工作流程图如图 9所示。 执行监听线程 同意接收文件。 否 是 发送同意接收信号,启动计时器,接收文件流,反馈状态 终止 接收发送端的 语音 文件传入请求 关闭 语音 文件流 将远程文件存储至本地文件 开始 发送拒绝信号 山西大学商务学院本科毕业设计 14 图 9 文字传输发送端程序流程图 P2P文字传输 1) 功能概述 将聊天内容发送端和接收端模块,通过多线程技术,集成在聊天窗体里面,窗体加载时进行监听,有文件传输请求到达,则为接收端,执行接收端工作流程;若试图发送信息到远程用户,则为发送端,执行发送端工作流程。 这样就 实现了 P2P模式对等传输。 2) P2P文字传输工作流程图 负责接收信息的监听线程集成在聊天窗体内,当聊天窗体加载时,将开启此线程。 当有信息传入请求,用户可以同意或者拒绝接收,若同意接收,则按照信息传输接收端模块工作流程执行。 若在聊天窗体生存周期内,无接入连接请求,则判断是否有用户尝试发送文件事件,若有,则按照信息传输发送端模块工作流程执行。 P2P文字传输工作流程图如 图 10所示。 添加待传送的 信息 接收端同意接收 信息。 否 是 启动计时器,发送文 字 流,反馈状态 终止 向接收端发送 信息 传输请求 关闭计时器,关闭 信息 流 将本地 信息 发送至接收端 开始 基于 C++的 FeiQ的山西达内公司局域网聊天系统设计与实现 15 图 10 P2P文字传输 程 序 流程图 3) 语音文件传输发送端窗体 文件发送主要作用是发送本地文件至远程接收端,所以功能尽可能简单化,方便用户操作,设计人性化。 设计的时候,采用了一些简单按钮,布局也和常用的窗体类似。 语音文件传输窗体主要控件属性见表 2。 表 2 文件传输窗体主要控件属性 控件 属性 值 TextBox Name txtFile Button Name btnBrowse Text 浏览 ... Button Name btnStart 否 执行监听线程,监听端口 是 否 启动计时器,接收 信息流 ,显示 内容 接收状态信息 终止 收到信息 开始 是 是 否 接收端允许。 启动计时器,发送 信息 流,显示 内容 发送状态信息 将本地文件发送至接收端 发送 文字。 否 是 有文 字 传 入请求 允许接收。 山西大学商务学院本科毕业设计 16 Text 开始 Button Name btnCancel Text 取消 Label Name lblStatus OpenFileDialog Name dlgOpenFile 4)具体实现 定义相关变量。 主窗体加载时,创建文件接收监听线程 ReceiverWorker,并启动 ReceiverWorker线程。 ReceiverWorker 线程执行的是 ReceiverStart()方法。 在 ReceiverStart()中,创建一个TcpListener的实例 tcpListener,其监听局域网内的任意 IP地址在 8088端口号上是否有传入的连接尝试。 当 ReceiverWorker线程监听到远程用户的文件传入请求,弹出消息提示框,用户可以选择同意或拒绝文件传入请求。 若同意,用户选择文件保存路径后,向发起方发送同意接受信号,并开启计时器,文件接收完毕时关闭计时器。 若用户拒绝文件传入,则向远程主机发送一个拒绝信号。 最后,执行关闭 BinaryReader,关闭 Socket等操作。 当用户打开语音文件发送窗体,主窗体调用其带 ip参数的构造方法,实参为当前与之建立连接的远程主机的 ip地址,用于发送文件时建立 socket连接使用。 用户单击“语音”按钮,开启 用于向远端发送文件的 SenderWorker线程。 SenderWorker线程执行 SenderStart()方法。 SenderStart()方法将创建一个 TcpClient的实例 tcpClient,尝试连接指定的 ip地址的 8088端口,将文件的信息发送给远程主机并等待远程主机的确认。 若接收方同意接收文件,则启动计时器并打开 BinaryWriter,将本地语音文件发送给远程主机,若远程主机拒绝接收,则关闭此次 socket 连接,等待下一次文件发送事件的触发。 用户管理模块实现 用户管理模块概 述 不管是任何系统,都必然会有用户这个角色,因此用户管理是每一个应用中必不可少的部分。 由于 企业内部的信息越来越私密,企业只希望员工通过内部局域网进行沟通与交流,所以 在本局域网聊天工具中,设计一个简单用户管理模块,对接入服务器的用户进行管理,能在一定程度上解决安全性问题。 本模块实现采用了 xml技术,二次开发时,通过一定的修改,能够很好的移植到数据库上。 用户数据模型 本模块实现一个简单的用户管理,所管理的目标是局域网内客户端用户。 模块中只涉及到用户一个模型,涉及到的属性项目有 用户 ID、 用户 名 (姓名 )、 密码 、 注册时间 等,其 ER图如图 59所示。 XML文档结构设计 XML分为文件序言( Prolog)和文件主体两个大的部分。 在此文件中的第一行即是文件序言。 它主要是告诉 XML 解。聊天系统设计与实现本科毕业论文(编辑修改稿)
相关推荐
800TVL 最低照度 (彩色 ) 日夜转换 IRCUT 双滤光片切换 视频帧率 25 帧 /秒 视频压缩码率 500Kbit/S~ 3Mbit/S RS485 接口 1 个(可选) 双向音频 1 路(可选) 报 警 2 路(可选) 音频压缩算法 支持协议 TCP、 UDP、 IP、 HTTP、 FTP、 SMTP、 DHCP、 DNS、 ARP、ICMP、 POP NTP 视频输出接口
铺筑到边产生不大于 20mm 的缝隙时,可适当调整砖之间的接缝宽度来弥补,不宜使用水泥砂浆填补。 需用细石混凝土填补的地方,应在当日用规定的强度等级的砼填补。 铺完路后,应采用小型手扶振动胶轮压路机由边缘向中间路面碾压 2~3 17 次。 一字型铺筑时,振动压路机前进方向应与砖的长度方向垂直,前进速度应与步行 速度相当,并不宜使路面砖受到扰动。 砖之间的接缝应采用砂灌满填实
件的附件以及带宏的 Office 文档等经常携带一些可执行程序,这些程序中很可能携带计算 技术方案说明 15 机病毒、特洛伊木马和 BO 等黑客工具,具有潜在的危险性,系统应该能够对这些可疑目标进行检测,隔离未知应用。 在内部网络上,也可能存在来自内部的一些恶意攻击,甚至可能存在来自外部的恶意入侵,安全防护体系应该能够监视内部关键的网段,扫描网络上的所有数据,检测服务拒绝型袭击、可疑活动
、无方案就施工、植筋粘钢使用的木凳 /金属支架不平稳固定 /脚手板跨度大于 2m、喷涂噪声 /粉尘 /有害气体。 可能造成的事故: 机械伤害、高处坠落、物体打击、触电、听力危害、中毒和窒息、火灾、职业病等。 职业健康安全目标: 5 级和 4 级危险源得到控制和消除, 5 级和 4 级危险源的整改率达到 100%,合格率达到 100%,杜绝重大安全事故,特殊工种人员持证上岗 符合国家要求。
主要研究 内容包括:机械设计,控制系统硬件设计和上位界面软件设计等。 北京联合大学 毕业设计 4 2 总体方案设计 机器视觉自动检测台控制系统的设计的主要研究内容包括:机械设计,控制系统硬件设计和上位界面软件设计等。 故需对本设计实施方案在控制器、控制工艺、驱动设备、上位监控软件及网络通信方式选择进行详细分析。 机械结构 机器视觉自动检测台系统主要包括传输机构、升降机构、水平移动机构等机械机构。
,提高企业的综合效益;另一方面,它也强调提高养猪企业的管理水平,提高管理人员、工程技术人员、饲养人员在经济观念、环境意识、参与管理意识、技术水平、职业道德等方面的素质,可有效“节水、省料、省药、省工和增收”,实现节支增收每头猪在 60 元左右。 同时,生猪清洁养殖还可有效改善饲养人员的劳动环境和操 作条件,减轻生产过程对员工健康的影响,为养猪企业树立良好的社会形象,促使公众对其产品的支持