已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件项目实训报告书软件项目实训报告书 学院 计算机科学与技术 专业 软件工程 组长 精品文档 2欢迎下载2欢迎下载 目录目录 第一章 项目简介 1 局域网聊天系统 1 第二章 需求分析 1 一 任务概述 1 1 1 目标 1 1 2 软件总体功能结构图 1 1 3 系统用例图 2 1 4 顶层数据流图 2 1 5 二层数据流图 3 1 6 用户的特点 3 1 7 假定与约束 3 二 需求规定 4 2 1 对性能的规定 4 2 1 1 精度 4 2 1 2 时间特性耍求 4 2 2 输出要求 4 2 3 数据管理能力要求 4 2 4 故障处理要求 4 三 运行环境规定 4 设备 4 四 接口 5 用户接口 5 硬件接口 5 通信接口 5 第三章 总体设计 5 概述 5 一 系统主要功能的工作流程 6 二 服务器端总体设计 7 三 客户端总体设计 8 第四章 详细设计 8 一 概述 8 二 服务器端 8 2 1 服务器主模块 10 三 客户端 11 3 1 登录模块 11 3 2 注册模块 11 3 3 主模块 11 3 4 私聊模块 11 第五章 实现和结果 11 5 1 实现 11 精品文档 3欢迎下载3欢迎下载 5 1 1 服务器的实现代码 11 5 1 2 客户端的实现代码 25 5 2 结果 38 第六章 测试与调试 40 1 测试环境配置 40 2 功能性测试 40 3 容错性测试 40 4 易用性测试 40 5 文档测试 41 第七章 总结 41 参考文献 41 成员信息成员信息 课题名称 专业计算机科学与技术学院软件工程系 姓名学号班级任务 客户端注册登录聊天 0902 客户端离线信息及程序美化 0902 服务器端信息收发及测试调试 小 组 成 员 0902 服务器端数据库 第一章第一章 项目简介项目简介 局域网聊天系统局域网聊天系统 随着互联网的发展应用比较广泛 学校 机房 宿舍等地方都是应用局域网的地方 本项目要求所设计实现的局域网聊天系统能够实现局域网的聊天 聊天内容的保存和文件 的传递等功能 并使用 TCP UDP 作为该系统的通讯协议 第第 2 2 章章 需求分析需求分析 一一 任务概述任务概述 1 11 1 目标目标 随着办公室工作量日益增加 大家交流日益密切 但由于聊天工具的不足 导致了大家的交流上的一些不便 故我们小组就根据这个背景开发此软件 它 主要特点较高通用性即在任意局域网内可以运行 系统具有较高的可移植性和 使用性 也包含实用性各及时性 但系统双方的交流可以在短期内进行 以达 到最快速度 不但能进行普通文字通信 而且也增加了文件传输功能 如果在 后期进度正常进行的情况下会进一步增加语音实时通信以及视频实时通信模块 1 21 2 软件总体功能结构图软件总体功能结构图 局域网聊天系统 客户端服务器端 在 线 用 户 模 块 聊 天 模 块 登 陆 模 块 查 看 好 友 资 料 用 户 资 料 更 改 注 册 模 块 处 理 信 息 更 新 用 户 列 表 精品文档 2欢迎下载2欢迎下载 1 31 3 系统用例图系统用例图 1 41 4 顶层数据流图顶层数据流图 客户端 1服务器客户端 2 数据库 精品文档 3欢迎下载3欢迎下载 1 51 5 二层数据流图二层数据流图 客户端 登陆窗口 主面板 聊天处理传文件增加 查找 好友 查看信息 客户端 N服务器 登陆 认证 1 61 6 用户的特点用户的特点 用户能够熟练使用计算机 熟悉相关 WINDOWS 1 71 7 假定与约束假定与约束 假定项目组成员不无故缺席且认真工作 本软件能在 6 月 29 日之前完成 二二 需求规定需求规定 2 12 1 对性能的规定对性能的规定 2 1 12 1 1 精度精度 按相关提示输入 精品文档 4欢迎下载4欢迎下载 2 1 22 1 2 时间特性耍求时间特性耍求 响应时间 所有的发送操作响应时间一般不超过 1 秒 大量的信息发送 呈现应该在 5 秒内显示或者 提示相关出错信息 更新处理时间 所有提交数据一般在 3 秒内相应 2 22 2 输出要求输出要求 文字数字等相关信息 2 32 3 数据管理能力要求数据管理能力要求 聊天记录近万条 在需要时能及时存取 相关配置信息 需要时能即使读取 2 42 4 故障处理要求故障处理要求 聊天记录及配置文件必须按日 按周进行及时的备份 三三 运行环境规定运行环境规定 设备设备 P3 处理器以上 内存 256M 以上 硬盘 50M 空余空间 四四 接口接口 用户接口用户接口 用户界面 采用 Windows 的通用图形界面 对用户友好 且必须对鼠标键盘提供支持 界 面设计应遵循 1 尽量保持一致性 界面规范应遵循 Winows 软件界面的规范 2 设计完整的对话过程 系统的每 d 一次对话都应该有明确的次序 开始 中间处理过 程 结束 3 提供简单的错误处理机制 4 提供信息反馈 用多种信息提示用户当前软件运行状态 软件界面元件的功能 5 操作可逆 其动作可以是单个的操作 或者是一个相对独立的操作序列 精品文档 5欢迎下载5欢迎下载 6 设计良好的联机帮助 7 显示启动画面 画面简洁明快 富有现代气息 硬件接口硬件接口 支持一般的 PC 机 笔记本电脑 通信接口通信接口 本产品用户各终端和服务器属于一个局域网 网内采用 TCP IP 或 UDP 协议 第第 3 3 章章 总体设计总体设计 概述概述 本软件系统设计分为服务器端应用程序和客户端应用程序两大部分 采用套接字进行 网络编程 为了传输数据采用了 udp 的连接方式 一一 系统主要功能的工作流程系统主要功能的工作流程 客户端与服务器的实时通信是本系统局域网络通信软件的主要功能之一 其工作流程 主要如下 服务器端启动程序 启动监听端口 默认监听端口为 9999 进入监听状态 等待客 户端的连接请求 客户端发送连接请求和相应的用户信息 服务器端接受用户连接请求 进行用户信息验证和相应的请求处理操作 并将处理结 果反馈给客户端 如果验证成功 则将在线用户列表信息发送给客户端 并通知客户端启 动聊天接收线程 客户端接收服务器端发送过来的好友信息 建立 socket 与其他在线用户进行实时通信 流程图如下 精品文档 6欢迎下载6欢迎下载 服服务务器器 等等待待客客户户端端连连接接 请请求求 验验证证客客户户信信息息 回回复复客客户户端端 向向客客户户端端发发送送好好 友友信信息息 客客户户端端 发发送送连连接接请请求求 等等待待服服务务器器回回应应 建建立立接接收收信信息息 socket 等等待待服服 务务器器发发送送在在线线信信 息息 聊聊天天信信息息收收发发 UDP连连接接 验验证证信信息息 UDP连连接接 在在线线信信息息 UDP连连接接 验验证证成成功功 二二 服务器端总体设计服务器端总体设计 服务器端主要功能 1 用户信息存储管理 主要用来验证 存储 向客户端发送用户信息 如用户账号 用户密码 2 用户请求处理 主要用来处理客户端的各种请求信息 包括连接请求和注册请求 服务器端程序的基本工作流程如下 1 打开预设定的网络端口 监听客户端的信息请求 2 对登陆的请求 进行用户账号与密码的验证 并作出相应的处理 如果验证成功 则向客户端返回其他用户在线离线信息 否则提示用户登陆不成功 3 对于客户端提出的用户账号申请请求 则核对用户提交的信息 并进行保存 然后 把申请成功的账号发送给用户 三三 客户端总体设计客户端总体设计 客户端主要功能包括 1 网络设置功能模块 用来设置实时通信然见客户端索要连接的服务器 ip 2 账号申请模块 应用于第一次使用本软件的用户申请账号 如果申请成功 则返回客 精品文档 7欢迎下载7欢迎下载 户端一个系统内唯一的账号作为以后用户登陆的身份标识 3 连接服务器功能模块 应用于已经获取了账号的用户 登陆到系统中 以便与其他在 线用户发送消息 4 实时通信功能模块 针对已经登陆的用户与其他在线好友进行公聊与私聊 5 离线消息发送与接收 针对离线的人发送离线消息 上线并接受 客户端基本工作流程 1 局域网内每个成员打开客户端软件后 向系统服务器申请一个用户账号并设置密码 2 以该账号密码登陆系统 与其他在线用户发送消息 第第 4 4 章章 详细设计详细设计 一一 概述概述 总体叙述分为服务器和客户端分别开发 二二 服务器端服务器端 服务器端始终运行在服务器 始终建立两个 socket 来监听客户端发来的连接 CServerSocket 和 CClientSocket 其中 CServerSocket 用来接收客户端发来的注册 登录 确认等信息 而 CClientSocket 则是用来处理聊天室等信息的转发 精品文档 8欢迎下载8欢迎下载 图 2 1 启动登陆 等待客户端登陆 客户端用户创建子套接字 Message CListenSocketCClientSocket Message 登陆成功 连接上 发送 message 显示 找到客户端并显示 登陆失败 发送 ID 和 IP 2 12 1 服务器主模块服务器主模块 用来显示哪个用户已经所有进入或者注册局域网的活动 比如显示某个用户成功注册 或者某个用户成功登陆客户端 以及接受用户注册消息和写入数据操作以及对数据库进行 操作增删 CServerSocket 负责两个客户端之间私聊的消息的转发以及离线消息的推送 三 客户端三 客户端 3 13 1 登录模块登录模块 填写服务器 IP 地址 如果有账号直接登录 如有没有则进入注册模块进行 注册 精品文档 9欢迎下载9欢迎下载 3 23 2 注册模块注册模块 通过用户填写各种信息 然后通过之前建立的 CClientSocket 发送到服务器 再 通过服务器保存到服务器本地端的数据库中 3 33 3 主模块主模块 负责显示每一个在线或者离线的用户状态 以及维持一个 CEdit 用来显示每 一 个用户发来的消息 也就是所谓聊天室的功能吧 3 43 4 私聊模块私聊模块 当用户选择某个用户进行私聊获得对方同意之后 开始进行私聊 以及开始进行传送 文件活动 目前暂时未实现 第五章第五章 实现和结果实现和结果 5 15 1 实现实现 5 1 15 1 1 服务器的实现代码 服务器的实现代码 a a ClientSocket 类 void CClientSocket OnReceive int nErrorCode 重载函数 在本地套接字接收到消息时自动调用它进行消息处理 TODO Add your specialized code here and or call the base class char buff1 sizeof Header memset buff1 0 sizeof buff1 初始化为 0 Receive buff1 sizeof buff1 接收信息 Header header Header buff1 int length header len char type header type if type RECV LEAVEMESSAGE char buff 1000 memset buff 0 sizeof buff Receive buff length 接收到源主机用户名 strcat buff str 目的主机 POSITION pos clist GetHeadPosition 返回第一个元素的 POSITION while pos NULL 向所有在线 用户发送 离线消息 curr CClientSocket clist GetNext pos 返回下一个元素的 CObject curr Send char header sizeof Header 发送命令字 curr Send buff sizeof buff if type SEND MESSAGE char buff 1000 memset buff 0 sizeof buff 初始化为 0 Receive buff sizeof buff 接收信息 遍历用户套接字链表将用户发送来的消息发送给在线列表的每一个用户 CClientSocket curr NULL 返回第一个元素的 POSITION POSITION pos clist GetHeadPosition while pos NULL curr CClientSocket clist GetNext pos 返回下一个元素的 CObject curr Send char header sizeof Header curr Send buff sizeof buff if type LOGIN IO char buff 1000 memset buff 0 sizeof buff Receive buff length m strNick m dlgServer SelstrName buff 通过账号 得到昵称 m strPass m dlgServer SelstrPass buff 通过账号 得到密码 if type ASK NUM 申请账号命令字 char buff 1000 memset buff 0 sizeof buff 初始化为 0 Receive buff length CString strNum CString strNick 将用户资料插入数据库 strNum m dlgServer InsertUserInfo buff 将用户信息存到数据库中 精品文档 11欢迎下载11欢迎下载 strNick m dlgServer SelstrName strNum 将系统分配给用户的账号返回给用户 if strNum Header head head type ASKNUM FAILED head len strNum GetLength this Send char this Send strNum strNum GetLength else Header head head type ASK NUM head len strNum GetLength this Send char this Send strNum strNum GetLength CTime time CTime GetCurrentTime CString t time Format Y m d H M S CEdit p Edit CEdit AfxGetMainWnd GetDlgItem IDC EDIT INFO CString strTemp t strNick CString buff 申请了一个帐号 strNum r n p Edit ReplaceSel strTemp m strName strNick buff if type PASS SUCCESS char buff 1000 memset buff 0 sizeof buff Receive buff length 接收用户登陆时输入的密码 CString strPass buff if m dlgServer m UserList FindString 1 m strNick LB ERR 列表中已经存 在 Header head head type PASS FAILED head len m strName GetLength 精品文档 12欢迎下载12欢迎下载 this Send char this Send m strName m strName GetLength else if strPass m strPass 判断密码是否正确 发送密码正确信息 Header head head type PASS SUCCESS head len m strNick GetLength this Send char this Send m strNick m strNick GetLength 在服务器监视编辑框内显示用户进入聊天室 CTime time CTime GetCurrentTime CString t time Format Y m d H M S CEdit p Edit CEdit AfxGetMainWnd GetDlgItem IDC EDIT INFO CString strTemp t m strNick 进入聊天室 r n p Edit ReplaceSel strTemp m strName m strNick m dlgServer UpdateUser this m strName 1 更新在线用户列表 服务器和客户端都 更新 检测是否有离线消息 else 发送密码错误信息 Header head head type PASS FAILED head len m strName GetLength this Send char this Send m strName m strName GetLength if type LEAVE MESSAGE char buff 1000 memset buff 0 sizeof buff 初始化为 0 Receive buff sizeof buff 接收信息 m dlgServer InsertLeaveMsg buff if type PRIVATE ASK 单独聊天命令字 char buff 1000 memset buff 0 sizeof buff 精品文档 13欢迎下载13欢迎下载 Receive buff sizeof buff CClientSocket curr NULL POSITION pos clist GetHeadPosition 返回第一个元素的 POSITION while pos NULL curr CClientSocket clist GetNext pos 返回下一个元素的 CObject curr Send char header sizeof Header curr Send buff sizeof buff if type PRIVATE REFUSE char buff 1000 memset buff 0 sizeof buff Receive buff sizeof buff CClientSocket curr NULL POSITION pos clist GetHeadPosition 返回第一个元素的 POSITION while pos NULL curr CClientSocket clist GetNext pos 返回下一个元素的 CObject curr Send char header sizeof Header curr Send buff sizeof buff if type PRIVATE MESSAGE char buff 1000 memset buff 0 sizeof buff 初始化为 0 Receive buff sizeof buff 接收信息 CClientSocket curr NULL POSITION pos clist GetHeadPosition 返回第一个元素的 POSITION while pos NULL curr CClientSocket clist GetNext pos 返回下一个元素的 CObject curr Send char header sizeof Header curr Send buff sizeof buff CSocket OnReceive nErrorCode void CClientSocket OnClose int nErrorCode 重载的 OnClose 函数 在有套接字断开 连接时会自动调用 精品文档 14欢迎下载14欢迎下载 TODO Add your specialized code here and or call the base class POSITION pos clist Find this if pos NULL clist RemoveAt pos 删除链表中退出的用户套接字 CTime time CTime GetCurrentTime 获取当前系统时间 CString t time Format Y m d H M S CEdit p Edit CEdit m dlgServer GetDlgItem IDC EDIT INFO CString strTemp t this m strName 离开聊天室 r n p Edit ReplaceSel strTemp 在 IDC EDIT INFO 中输出字符串 m dlgServer UpdateUser this this m strName 2 this Close delete this CSocket OnClose nErrorCode void CClientSocket ServerClose CString buff buff m strNick Header head head type SERVER STOP head len buff GetLength CClientSocket curr NULL POSITION pos clist GetHeadPosition 返回第一个元素的 POSITION while pos NULL curr CClientSocket clist GetNext pos 返回下一个元素的 CObject curr Send char curr Send buff sizeof buff c c ChatServerDlg 类 void CChatServerDlg UpdateUser CClientSocket pSocket CString m usrLeaveName int type type 1 userlogin type 2 userleave CString user info CString str CClientSocket pSock NULL if type 2 精品文档 15欢迎下载15欢迎下载 m ListClose AddString m usrLeaveName if LB ERR m ListClose FindString 1 m usrLeaveName nIndex m ListClose FindString 1 m usrLeaveName 为 1 从头查找整个列表框 m ListClose DeleteString nIndex int StringCount m ListClose GetCount 这段代码 是得到离线列表框的 用户 for int i 0 iclist GetHeadPosition 得到 list 中首元素的位置 while pos NULL pSock CClientSocket pSocket clist GetNext pos 返回下一个元素的 CObject m UserList AddString pSock m strName 将刚上线的用户添加到列表中 user info pSock m strName 将在线用户列表保存在字符串中 设置分 隔符 head type LOGIN IO head len user info GetLength 向客户端发送离线用户列表 POSITION po pSocket clist GetHeadPosition 获得列表首元素的 POSITION while po NULL pSock CClientSocket pSocket clist GetNext po pSock Send char 向客户端发送离线用户列表 pSock Send LPCTSTR user info user info GetLength 精品文档 16欢迎下载16欢迎下载 CString CChatServerDlg InsertLeaveMsg CString str CString array 3 int k 0 k 用于标志数组 array 的当前单元 for int i 0 iOpen Provider Microsoft Jet OLEDB 4 0 Data Source students mdb adModeUnknown m pRs CreateInstance uuidof Recordset m pRs Open select from table1 variant t IDispatch m pCon true adOpenStatic adLockOptimistic adCmdText while m pRs adoEOF vFieldValue m pRs GetCollect strName strFieldValue LPCTSTR bstr t vFieldValue if strFieldValue array 0 目的主机名 m pRs PutCollect sourceName variant t array 1 保存源主机名 m pRs PutCollect leaveMessage variant t array 2 保存消息内容 m pRs MoveNext m pRs Close return strFieldValue CString CChatServerDlg QueryLeaveMsg CString str CString strSourceName CString strLeaveMsg 初始化环境 精品文档 17欢迎下载17欢迎下载 CoInitialize NULL 创建并打开数据库连接对象 variant t vFieldValue CString strFieldValue m pCon CreateInstance uuidof Connection m pCon Open Provider Microsoft Jet OLEDB 4 0 Data Source students mdb adModeUnknown m pRs CreateInstance uuidof Recordset m pRs Open select from table1 variant t IDispatch m pCon true adOpenStatic adLockOptimistic adCmdText while m pRs adoEOF vFieldValue m pRs GetCollect strName strFieldValue LPCTSTR bstr t vFieldValue if strFieldValue str vFieldValue m pRs GetCollect sourceName 得到 源主机名 是谁发过来的消息 strSourceName LPCTSTR char bstr t vFieldValue vFieldValue m pRs GetCollect leaveMessage strLeaveMsg LPCTSTR char bstr t vFieldValue m pRs MoveNext 移动到下一条记录 m pRs Close 关闭数据库 return void CChatServerDlg OnStart TODO Add your control notification handler code here ASSERT IDM ABOUTBOX ASSERT IDM ABOUTBOX AppendMenu MF SEPARATOR pSysMenu AppendMenu MF STRING IDM ABOUTBOX strAboutMenu Set the icon for this dialog The framework does this automatically when the application s main window is not a dialog 精品文档 18欢迎下载18欢迎下载 SetIcon m hIcon TRUE Set big icon SetIcon m hIcon FALSE Set small icon TODO Add extra initialization here UpdateData FALSE CoInitialize NULL 创建并打开数据库连接对象 variant t vFieldValue CString strFieldValue CString str int num 0 定义数据库中 账号的个数 m pCon CreateInstance uuidof Connection m pCon Open Provider Microsoft Jet OLEDB 4 0 Data Source students mdb adModeUnknown m pRs CreateInstance uuidof Recordset m pRs Open select from table1 variant t IDispatch m pCon true adOpenStatic adLockOptimistic adCmdText while m pRs adoEOF vFieldValue m pRs GetCollect strName strFieldValue LPCTSTR bstr t vFieldValue str strFieldValue num m pRs MoveNext m pRs Close CString array 20 int k 0 k 用于标志数组 array 的当前单元 for int i 0 i str GetLength i i 用于记录 str 变量的当前字符 if i str GetLength 1 if str i else array k array k str i for int n 0 nReplaceSel 服务器初始化成功 r n 精品文档 19欢迎下载19欢迎下载 GetDlgItem IDC START EnableWindow false return 5 1 25 1 2 客户端的实现代码客户端的实现代码 a a AskDlg 类 void CAskDlg OnOK TODO Add extra validation here UpdateData if m Nick m Pass m PassAgain AfxMessageBox 用户名或密码不能为空 请再次输入 return if m Pass m PassAgain AfxMessageBox 前后输入的密码不一致 请再次输入 return 编辑用户信息并存储到一个字符串里 CString str 获取性别 CString strSex UINT nID GetCheckedRadioButton IDC RADIO MAN IDC RADIO WOMAN GetDlgItemText nID strSex AfxMessageBox m Country if m RealName m RealName if m Country m Country str m Nick 将用户信息保存在字符串中 设置分隔符 str m RealName str strSex str m Country 发送用户信息 Header head head type ASK NUM 精品文档 20欢迎下载20欢迎下载 head len str GetLength m pSocket Send char m pSocket Send str str GetLength c c ClientSocket 类 void CClientSocket OnReceive int nErrorCode char buff sizeof Header memset buff 0 sizeof buff Receive buff sizeof buff Header header Header buff int length header len char type header type 判断消息类型并分别予以响应 if type RECV LEAVEMESSAGE char buff 1000 memset buff 0 sizeof buff Receive buff sizeof buff CString strTemp buff CString array 3 int k 0 k 用于标志数组 array 的当 前单元 for int i 0 iShowLeaveMsg strMsg if type ASK NUM 精品文档 21欢迎下载21欢迎下载 askDlg AskSuccess if type ASKNUM FAILED askDlg AskFailed if type SEND MESSAGE chatDlg GetMessage if type LOGIN IO chatDlg UpdateUser if type PASS SUCCESS loginDlg Pass if type PASS FAILED AfxMessageBox 您输入的信息有误 请重新输入 if type PRIVATE ASK char buff 1000 memset buff 0 sizeof buff Receive buff sizeof buff array 0 array 1 CString user info buff int b 0 for int i 0 iCreateDlg array 0 else Refuse if type PRIVATE REFUSE char buff 1000 memset buff 0 sizeof buff Receive buff sizeof buff CString user info buff array 0 array 1 int b 0 for int i 0 ialClose 精品文档 23欢迎下载23欢迎下载 privateDlg Finished AfxMessageBox array 0 暂时不方便与您私聊 if type PRIVATE MESSAGE char buff 1000 memset buff 0 sizeof buff Receive buff sizeof buff CString strTemp buff CString array 2 int k 0 for int i 0 iGetMessage array 1 if type SERVER STOP char buff 1000 memset buff 0 sizeof buff Receive buff sizeof buff AfxMessageBox 服务器已关闭 由此给您带来的不便 敬请原谅 CSocket OnReceive nErrorCode d d Leave 类 精品文档 24欢迎下载24欢迎下载 void CLeave ShowLeaveMsg CString strLeaveMsg CString array 2 int k 0 k 用于标志数组 array 的当前单元 for int i 0 iCreate AfxMessageBox 套接字创建失败 m pSocket Close return if m pSocket Connect m strServer 9999 m strServer 就是服务器 IP 地址 AfxMessageBox 连接服务器失败 m pSocket Close 精品文档 25欢迎下载25欢迎下载 return m already true 如果套接字已创建就置为真 发送用户名 Header head head type LOGIN IO head len m strName GetLength m pSocket Send char 发送登陆 LOGIN IO 命令字 m pSocket Send m strName m strName GetLength 发送账号 发送密码 head type PASS SUCCESS head len m strPass GetLength m pSocket Send char 发送验证密码 PASS SUCCESS 命 令字 m pSocket Send m strPass m strPass GetLength 将登陆界面编辑框重新清空 m strName this m strPass UpdateData false 调用注册条款窗口 CAGREEDLG dlg dlg new CAGREEDLG m pSocket dlg DoModal f f MyChat 类 BOOL CMyChatApp InitInstance if AfxSocketInit AfxMessageBox IDP SOCKETS INIT FAILED return FALSE AfxEnableControlContainer PrivateOrLeave FALSE 在程序开始运行并调用 APP 时创建套接字对象指针 CClientSocket clientSocket clientSocket new CClientSocket 动态分配 Socket 套接字 创建登陆窗口对象指针 CLoginDlg loginDlg loginDlg new CLoginDlg clientSocket 动态分配登陆对话框 响应用户在登陆窗口的操作 if loginDlg DoModal IDCANCEL 精品文档 26欢迎下载26欢迎下载 取消登陆时及时销毁套接字对象 delete clientSocket if clientSocket clientSocket Close delete loginDlg return false else delete loginDlg OK 确定时 释放 登陆框 创建聊天主窗口对象指针 CMyChatDlg dlg dlg new CMyChatDlg clientSocket 主对话框 m pMainWnd dlg 主窗口指针 指向对话框 int nResponse dlg DoModal 显示主窗口 if nResponse IDOK else if nResponse IDCANCEL 用户离开时及时销毁套接字对象 if clientSocket clientSocket Close delete clientSocket return FALSE g g MyChatDlg 类 BOOL CMyChatDlg OnInitDialog SetWindowText theApp m strName 欢迎你来到 Socket 聊天室 m brushcolor CreateSolidBrush RGB 255 250 205 return TRUE void CMyChatDlg OnSend UpdateData 获取文本框信息 if m strMessage 文本框为空 AfxMessageBox 不能发送空消息 CEdit pEdit CEdit GetDlgItem IDC EDIT MESSAGE pEdit SetFocus return 精品文档 27欢迎下载27欢迎下载 Header head 发送消息的结构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 店铺购买房合同范本
- 工程理赔协议书模板
- 滴灌安装协议书范本
- 工商联招聘合同范本
- 工程勘察服务协议书
- 工程委托投标协议书
- 小工程大包合同范本
- 小餐桌转让合同范本
- 灭鼠药品安全协议书
- 工程损坏协议书范本
- 2025国实盛世(北京)企业运营管理有限责任公司招聘200人备考题库带答案解析
- 2025福建泉州安溪县民政局招聘编制外工作人员和乡镇养老救助协理员8人笔试考试参考题库及答案解析
- 课件人民调解
- 2025年职业卫生知识培训考核试题(含答案)
- 太阳能路灯安装工艺流程
- 肺栓塞的急救处理流程
- 四川省成都市蓉城名校联盟2025-2026学年高三上学期11月考试英语试卷
- 推土机司机岗前基础常识考核试卷含答案
- 2025下半年黑龙江大庆市杜尔伯特蒙古族自治县事业单位人才引进33人备考题库附答案
- 2025江苏连云港灌云大伊山景区旅游开发有限公司招聘工作人员10人笔试历年常考点试题专练附带答案详解试卷3套
- 2025下半年海南万宁市事业单位招聘工作人员146人(第1号)考试笔试模拟试题及答案解析
评论
0/150
提交评论