欢迎来到天天文库
浏览记录
ID:34305906
大小:270.50 KB
页数:24页
时间:2019-03-04
《c++课程设计:基于socket通信的聊天室》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计报告课程名称:高级语言课程设计设计题目:基于Socket通信的聊天室专业:计算机科学与技术姓名:学号:指导教师:李晓虹2016年1月10日1.需求分析1.1聊天室程序的开发背景近年来,互连网发展日新月异,网络使空间的距离不再成为人们沟通的障碍,世界各个角落的人们可以通过Internet收发邮件、实时聊天、获取最新的资讯。因此本次毕业设计以“面向连接的Winsock网络会话程序开发”为题,制作一个C/S聊天室程序,通过制作该程序还能更好的学习网络socket编程的相关知识。1.2聊天室的设计目标本课题是建立聊
2、天通信模型,设计一个聊天室软件,只是简单的利用Socket来实现端到端的通信,主要功能为:服务器端功能:1、初始化socket,进行单对单的点对点连接模式2、输入远程用户的IP地址可以进行socket连接。3、接受用户传送来的聊天信息,然后显示在列表上。4、接受用户传送来的连接判断命令,并向用户发出响应命令。2.总体设计2.1功能要求²支持点到点的连接,在服务器和多个客户端之间进行数据传输;²接收客户端发送的消息,并显示在一个列表框中;²显示出连接的用户计算机名字;2.2系统主要功能和主要功能描述:聊天程序必须能够
3、做3件事情:(1)聊天程序要在待定的端口上通过socket发送聊天文字,并发送到开启相同程序的客户端。(2)聊天程序要及时接受从其他地方发送过来的信息,然后把这些信息显示在列表框中去。(3)服务器还要监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。这些要求可以通过CSocket类提供的功能实现。从CSocket派生出两个类CListenSocket和CClientSocket,它们分别用来侦听客户的连接请求和建立与客户的连接。服务器只需要一个侦听套接字CListenSocke
4、t,然后根据客户的连接请求动态创建客户套接字CClientSocket。客户套接字的数量是不可预知的,因此需要一个列表来记录。MFC的CPtrList类就能实现这种功能。3.详细设计3.1设计流程图启动启动客户端用户创建子套接字MessageCClientSocketCClientSocketMessage登陆成功连接上发送message显示找到客户端并显示3.2设计实现(1)首先启动VisualC++6.0,利用MFCAppWizard[EXE]建立一个新的MFC工程,工程名为tcpclient,在MFCAppW
5、izardStep1的时候选择Dialogbased即基于对话框,在Step4时勾选WindowsSockets选项(如图3-11),其他默认值下一步。图3-11(2)程序主要分为三个窗口,第一个是发送数据的窗口,需要输入连接到服务器的相关设置信息,一般为IP地址,第二个是聊天信息显示窗口,也就是接受数据的窗口,该窗口显示接收到的消息;第三个是消息编辑发送窗口,需要输入你要发送的信息内容并发送,还有一个是主机名窗口,输入目标的主机名即可发送信息。图3-12(3)下面重点介绍一下单击连接服务器按钮时的处理网络连接的函
6、数。代码设置如下:BOOLCChatRoomDlg::OnInitDialog(){CDialog::OnInitDialog();ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if(!strAb
7、outMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}//Settheiconforthisdialog.Theframeworkdoesthisautomatically//whentheapplication'smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m
8、_hIcon,FALSE);//Setsmallicon//TODO:AddextrainitializationhereInitSocket();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}(5)接下来就是创建通信隧道,绑定监听端口的函数,代码设置如下:HCURSORCChatRoomDlg:
此文档下载收益归作者所有