基于Visual-C++的聊天室程序设计报告_第1页
基于Visual-C++的聊天室程序设计报告_第2页
基于Visual-C++的聊天室程序设计报告_第3页
基于Visual-C++的聊天室程序设计报告_第4页
基于Visual-C++的聊天室程序设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机网络课程设计标题:基于Visual C的聊天室编程姓氏:学号:类级别:指导教师:全职:1.简介计算机网络技术的发展远远超出了人们的预期,人们的日常工作和学习等越来越多的网络依赖。各种实时聊天娱乐软件也同时诞生,给我们的即时消息带来了很多便利。例如,众所周知的tencentqq、Microsoft MSN、mobile Fetion等都是相对成功的实时聊天工具。随着互联网的普及,各种聊天工具也陆续出现,但是学习了TCP/IP协议与网络编程课程后,发现进行简单的网络通信实际上很难。以下课程适用于使用MFC作为开发工具的简单web聊天程序,以实现基本通信功能。1.1聊天室程序开发背景近年来,随

2、着互联网络的快速发展,互联网不再是人们沟通的障碍,世界各地的人们通过互联网收发邮件、实时聊天,获取最新信息。因此,此次毕业项目以“开发连接的Winsock网络会话程序”为题,制作了C/S聊天室程序,从而更好地掌握了网络套接字编程的相关知识。1.2聊天室设计目标本主题是构建聊天通信模型,设计包括服务器端和客户端在内的聊天室软件,主要功能如下:服务器端功能:1、初始化套接字并创建服务器端。2、维护存储所有用户的IP地址和端口信息的连接列表。3、接受用户发送的聊天消息,并将其传递给关联列表中使用的用户。4、接受用户发送的连接判断命令,并向用户发出响应命令。客户端功能:客户端界面中的两个文本框之一用于

3、显示接受的聊天信息,另一个用于接受用户输入的聊天信息。按“发送”按钮时,将信息发送到服务器。本主题的毕业设计可让您更深入地了解和了解WINSOCK控件的基本属性、方法和事件,了解internet聊天通信的概念,在传输控制协议(TCP)中进行数据交换,并初步了解internet聊天通信程序的设计方式。大学时期巩固和扩充学习内容,进行项目的设计开发训练,更好地适应社会的要求。2.整体设计2.1功能要求支持多个客户端的连接,以便在服务器和多个客户端之间传输数据。收到客户端发送的消息,并显示在列表框中。连接用户后,将显示一条消息,显示连接的用户名。您可以在发送消息时显示聊天的所有历史记录。2.3说明系

4、统主要功能和主要功能:服务器端聊天程序必须能做以下三件事:(1)服务器聊天程序必须在等待的端口等待聊天客户的连接请求,并维护客户连接表格以记录所有成功的连接。(2)服务器聊天程序必须及时接受每个聊天客户发送的消息,并将其传递给一个或多个客户连接。对于公共聊天室,服务器将接收的信息发送给源端以外的所有客户。(3)服务器还监视这些连接的状态,如果客户主动离职或出现故障,则从列表中删除相应的表条目,并及时更新连接表。这些要求可以通过CSocket类提供的功能来实现。CSocket派生了两种类型的CListenSocket和CClientSocket,用于接收客户的连接请求和建立与客户的连接。服务器只

5、需要侦听套接字CListenSocket,然后根据客户的连接请求动态地仅需要一个客户套接字cclient套接字。客户套接字的数量不可预测,需要有文档记录的列表。MFC CPtrList类可以实现此功能。客户端聊天程序需要完成以下几个功能:(1)客户端聊天程序必须建立和维护与服务器的连接,获取用户的设置,尝试连接到服务器,并随时检测连接状态。(2)客户端聊天程序将用户输入的信息及时发送到聊天服务器。通常,用户输入一行信息并输入amplt;enterampgt;按下键后,聊天程序将发送该行的信息以满足用户的交互需要。(3)要准备接受来自服务器的信息,随时显示收到的信息,以便用户及时看到对方的响应。

6、(4)用户终止聊天进程是关闭与服务器的连接。建议提前通知服务器,或直接向服务器发送关闭通知。这样,服务器就可以及时了解客户端连接状态,并将对方客户的终止信息及时发送到对等实体。客户端聊天程序必须使用通过CSocket类派生的CChatSocket类实现。此套接字用于向服务器发送连接请求、保持与服务器的连接、发送和接收聊天消息以及执行这些功能。3.详细设计3.1设计流程图发动引擎登陆等待客户端登录客户端用户创建子套接字消息CListenSocketCclient套接字消息成功登陆正在连接发送Message显示查找并显示客户端登陆失败发送ID和IP3.2客户机实施(1)首先启动Visual C 6

7、.0,使用MFC AppWizardEXE设置名为tcpclient的新MFC项目,在MFC AppWizard Step1中选择基于对话框的Dialog based,然后在Step4中选择Windows Sockets选项(图3.11 MFC设置(2)客户端主要分为三个窗口,第一个是连接窗口,需要输入有关服务器连接的设置信息;第二个是聊天信息显示窗口,显示登录服务器后发送和接收的消息。第三个是消息编辑发送窗口,必须输入和发送要发送的信息的内容。创建新对话框并添加各种控件(请参阅控制表3.1),如下图所示。图3.12聊天窗口布局表3.1控件类型及其ID标题控件类型控件ID连接Static(静态

8、)IDC_STATIC信息区域Static(静态)IDC_STATIC我的ID:Static(静态)IDC_STATIC服务器ID:Static(静态)IDC_STATIC端口号(默认值为520)Static(静态)IDC_STATIC连接到服务器按钮IDC_connet发送(回车)按钮IDC_send编辑框1编辑IDC_EDIT1编辑框2编辑IDC_EDIT2编辑框3编辑IDC_EDIT3编辑框4编辑IDC_EDIT4编辑框5编辑IDC_EDIT5其中编辑框1:服务器IP;编辑框2:端口号;编辑框3:消息显示区域;编辑框4:消息编辑区域;编辑框5:我的ID。(3)服务器IP编辑框控件IDC_

9、EDIT1对应的成员变量为OnChangeEdit1端口号编辑框控件IDC_EDIT2的对应成员变量为OnChangeEdit2消息显示区域编辑框控件IDC_EDIT3对应的成员变量为OnChangeEdit3消息编辑区域编辑框控件IDC_EDIT4对应的成员变量为OnChangeEdit4my ID编辑框控件IDC_EDIT5对应的成员变量为OnChangeEdit5(4)以下重点介绍单击“服务器连接”按钮时处理网络连接的功能。代码设置如下:void ctcpclienttdlg :3360 on connet()/todo : add your control notification h

10、andler code hereIf(clconect) clconect。close();CString ipstr、portstrInt portGetDlgItemText(IDC_EDIT1,IP str);Getdlgitem text (IDC _ edit2,ports tr);Getdlgitem text (IDC _ edit5,客户端名称);Portstr .trim left();Portstr .t rim right();port=atoi(ports tr);If(port0port9999)Clconect。create();/cslisten。bind(por

11、t);If(clconect .Connect(ipstr,port)cl conect . setp(this);CWnd * CW=GetDlgItem(IDC _ EDI t1);CW-enable window(false);CW=GetDlgItem(IDC _ edit 2);CW-enable window(false);CW=GetDlgItem(IDC _ connet);CW-enable window(false);CW=GetDlgItem(IDC _ EDI t5);CW-enable window(false);SetDlgItemText(IDC_EDIT3,“客

12、户端名称”rn服务器连接成功);CString enterinfo=clientname“聊天室”;Int len=enterinfo。get length();Clconect。Send(enterinfo,len);ElseClconect。close();MessageBox(“”连接失败)。验证IP和端口是否与服务器匹配!或服务器未打开,或服务器“”连接错误,MB _ ICONERRORElseMessageBox(输入的端口或IP不正确。请重新输入);设计阶段:创建字符串ipstr(存储IP)、portstr(存储端口)、clientname(用户名)和整数port(端口号)。使用G

13、etDlgItemText将每个编辑框中的信息指定给相应的变量。监视端口号和IP格式,设置相应的错误提示(下图)。图3.13连接错误提示图3.14端口或IP错误提示创建套接字clconect,成功创建后,将相关控件设置为只读(防止故障)。设置连接后,设置相应的提示。(5)以下函数是对话框中的“发送”(回车)按钮,设置如下:void ctcpclienttdlg :3360 onsend()CString strGetDlgItemText(IDC_EDIT4,str);Str=clientname : strInt len=str。get length();If (clconect.send

14、(str,len) 1) setdlgitemtext (IDC _ edit4, );定义字符串str以存储输入的消息,调整格式,然后使用CSocket的操作函数send将消息发送到服务器。(6)要显示客户端从服务器上其他用户处收到的信息,请将代码设置为:void ctcpclienttdlg :3360 on rev()CString str,str 1;char ss256;for(int j=0);J256j)ssj= 0;Clconect。Receive(ss,256);If(ss!= )Str .format(“% s”,ss);GetDlgItemText(IDC_EDIT3,S

15、T R1);Str=str1 r n strSetDlgItemText(IDC_EDIT3,str);ced it * ce=(ced it *)getdlgitem(IDC _ EDI T3);ce-line scroll(ce-getline count()-1);设计阶段:创建字符串str,str1,字符数组ss。将服务器套接字的信息数据存储在ss中,调整格式,然后打印到消息区。(7)断开与服务器的连接时发出警告,如下图所示。图3.15断开连接提示代码设置如下:void ctcpclienttdlg :3360 oncl()MessageBox(“连接已断开或找不到服务器”);CWnd

16、 * CW=GetDlgItem(IDC _ EDI t1);CW-enable window(true);CW=GetDlgItem(IDC _ edit 2);CW-enable window(true);CW=GetDlgItem(IDC _ connet);CW-enable window(true);CW=GetDlgItem(IDC _ EDI t5);CW-enable window(true);如果与服务器的连接丢失,请重新激活“编辑服务器连接设置”框,直到下次连接。(8)退出程序时的提示,如下图所示:图3.16确认关机代码设置如下:void ctcpclienttdlg :3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论