c++课程设计:聊天室

c++课程设计:聊天室

ID:33116901

大小:294.00 KB

页数:18页

时间:2019-02-20

c++课程设计:聊天室_第1页
c++课程设计:聊天室_第2页
c++课程设计:聊天室_第3页
c++课程设计:聊天室_第4页
c++课程设计:聊天室_第5页
资源描述:

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

1、课程设计报告课程名称:面向对象程序设计C++设计题目:聊天室____专业:计算机科学与技术_姓名:______学号:指导教师:李晓虹_______2015年12月20日一.系统需求分析这次开发的局域网聊天工具目标在于在局域网环境下能够简单的实现人与人的即时通讯,要求收发信息速度快、安全性高和精准性高。本软件基于visualstudio2010环境下开发,并采用MFC进行处理,界面具有基本的功能按钮。同时,本软件包含有客户端和服务端,他们之间是基于UDP协议下进行通信的。1.1设计要求:采用C/S模式,分为客户端与服务器端程序1.2功能要求:1.2.1服务器端(1)服务器聊天程序要在待定的端口上

2、等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。(2)服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。对于公共聊天室,服务器将把接受到的信息向除源端外的所有客户发送过去。(3)服务器还要监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。1.2.1客户端(1)客户端聊天程序要负责建立和维护与服务器的连接,通过获取用户的设置尝试与服务器的连接,并且随时检测连接的状态。(2)客户端聊天程序要把用户输入的信息及时发送到聊天服务器。一般情况下,当用户输入一行信息并且按下回车键后聊天程序就要把

3、这一行信息发送出去,才能及时地满足用户的交互需求。(3)要随时准备好接受来自服务器的信息,随时把接受到的信息显示出来,让用户及时看到对方的响应。(4)在用户退出聊天过程是要关闭与服务器的连接。一.总体设计支持多个客户端的连接,在服务器和多个客户端之间进行数据传输; 接收客户端发送的消息,并显示在一个列表框中; 在用户连接上后有提示,显示出连接的用户名字; 发送信息时可以显示聊天的所有记录.服务器连接套接头侦听套接字客户机Socket()Socket()Bind()Bind()Listen()Connect()创建连接套接口Accept()Send()Receive()Receive()Rece

4、ive()CloseSocket()CloseSocket()CloseSocket()一.详细设计3.1数据库代码和表:createtableimuser(ImNochar(15)primarykey,ImNamechar(15),ImPhonechar(15),ImIpchar(15),ImPasswordchar(15),ImOnlineint,ImPortchar(10))createtablefriend(ImNo1char(15),ImNo2char(15),primarykey(ImNo1,ImNo2),foreignkey(ImNo1)referencesimuser(Imno

5、),foreignkey(ImNo2)referencesimuser(Imno))createtableOfflineMessage(ImNochar(15),ImMsgbinary(1536))createtableOffAddfriend(ImNochar(15),ImInfobinary(500))表3-1用户表结构表3-2离线用户表结构表3-3请求加为好友用户表结构表3-4用户信息表3.2C++各模块代码实现:1)始化套接字BOOLCCHATDlg::InitSocket()m_socket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);if(m_so

6、cket==INVALID_SOCKET)MessageBox("套接字创建失败!");returnFALSE;SOCKADDR_INServerAddr;ServerAddr.sin_family=AF_INET;ServerAddr.sin_port=htons(6000);ServerAddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);intretval;retval=bind(m_socket,(SOCKADDR*)&ServerAddr,sizeof(SOCKADDR));if(retval==SOCKET_ERROR)closesocket(m_

7、socket);MessageBox("绑定失败!");returnFALSE;returnTRUE;2)、//消息处理函数,注意在声明时应该为staticDWORDWINAPICCHATDlg::RecvProc(LPVOIDlpParameter)SOCKETsock=((RECVPARAM*)lpParameter)->sock;http://www.wendangxiazai.com/b-

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

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

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