您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 简单聊天程序的设计与实现课程设计
四川师范大学成都学院实验报告课程计算机网络实验名称简单聊天程序的设计与实现一、实验目的综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序,以VisualC++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力二、实验内容1、按实验步骤中参考程序使用VC++设计出程序;2、在第1步的基础上使用VC++或其他工具设计出一个能实现两个人聊天的网络程序。三、实验原理1.WindowsSocket和套接字的基本概念;程序分为服务端和客户端两个,其主要工作过程如图1所示:服务器端:服务器程序首选启动,通过调用socket()函数建立一个套接字,然后调用bind()函数使套接字和本地网络地址联系在一起,再调用listen()使套接字做好侦听的准备,并规定它的请示队列的长度,之后就调用accept()来接收连接。客户机端:客户机程序也使用socket()建立套接字,然后调用connect()函数和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用read()和write()来发送和接收数据。最后,等数据传送结束后,双方调用close()关闭套接字。四、调试过程分析描述Login服务器:在启动聊天室服务端的时候,会出现图4.1的界面,该界面为服务器的登陆界面。四川师范大学成都学院启动服务器:在登陆页面的环境下,点击启动服务器按钮,即可创建一个新的服务器,服务器界面如图4.2所示Login客户端:在启动客户端服务端的时候�会出现图4.3的界面�该界面为客户端的连接界面。四川师范大学成都学院图4.4为创建张三客户端�输入用户名张三:图4.5为用户张三连接服务器界面,在输入用户名张三并点击确定后,出现如下界面:四川师范大学成都学院图4.6为用户李四的连接界面,在李四连接后,张三和李四用户同时出现在用户列表内:图4.7为用户李四的连接界面,在王五连接后,张三,李四和王五用户同时出现在用户列表内:四川师范大学成都学院服务器显示:在张三,李四,王五进入聊天室后的界面为图4.8:图4.8用户成功登陆后界面开始聊天,群聊:客户端发送信息时的界面为图4.9四川师范大学成都学院图4.10为私聊界面。张三与李四私聊,点击私聊选项,并发送私聊内容。图4.11为张三私聊界面,李四和张三私聊,张三能看到李四发送的内容:四川师范大学成都学院图4.12为王五的界面显示,王五看不到张三和李四的私聊内容:四川师范大学成都学院五设计的总结和体会该次课程设计的制作我主要是参照了图书馆内的相关书籍,找到一个类似的程序,然后按照书上的内容一步步的做出来了,虽然这个程序算不上是我自己写出来的,但通过这样的一个过程,还是让我学会了很多东西,也算能比较熟练地掌握MFC这一个软件了,这算是一个不小的收获吧,而且,在做这个程序的过程中,让我认识到了在做这样程序中,遇到解决不了的问题与同学的讨论时很重要的,譬如可以以运行,但是就是无法出现连接的显示和状态。最后与同学讨论后,才知道是服务器端有了错误,没有设置自己的IP地址,然后对于客户端进行了一番修改,才终于出现了上述的结果。虽然没有彻底做的出来,但是还是比较开心的,因为自己知道了哪里不足,哪里不可以,可以在以后多多的做练习来充实自己。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!我以后还是需要多多的练习,多多的勤奋,这样才有可能让自己有信心,有动力,让自己不至于懂的太少而怯场,因为不懂而不会做,相信自己以后会编写出让自己满意的程序和软件的。6参考文献[1]任泰明著.TCP/IP协议与网络编程.西安电子科技大学出版社.2004[2]唐克著.MFC程序设计,UsingVisualC++6.0.北京希望电子出版社.2002[3]邓全良著.Winsock网络程序设计.中国铁道出版社.2002[4]《VisualC++6.0使用与开发》清华大学出版社,木林森、高峰霞、罗丽琼、奚红宇编著[5]《Visualc++实用教程(第三版)郑阿奇,电子工业出版社源代码四川师范大学成都学院I服务器://ServerDlg.cpp:implementationfile//#includestdafx.h#includeServer.h#includeServerDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:publicCDialog{public:CAboutDlg();protected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)END_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CServerDlgdialogCServerDlg::CServerDlg(CWnd*pParent/*=NULL*/):CDialog(CServerDlg::IDD,pParent){m_hIcon=AfxGetApp()-LoadIcon(IDI_ICONAPP);}voidCServerDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);DDX_Control(pDX,IDC_LIST_USER,m_lbUser);DDX_Text(pDX,IDC_EDIT_DISPLAY,m_strDisplay);}四川师范大学成都学院BEGIN_MESSAGE_MAP(CServerDlg,CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BN_START,OnBnStart)ON_BN_CLICKED(IDC_BN_CLOSE,OnBnClose)ON_MESSAGE(WM_RECEIVE,OnReceive)ON_MESSAGE(WM_CLIENTCLOSE,OnClientClose)ON_MESSAGE(WM_ACCEPT,OnAccept)ON_WM_DESTROY()END_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CServerDlgmessagehandlersBOOLCServerDlg::OnInitDialog(){CDialog::OnInitDialog();ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if(!strAboutMenu.IsEmpty()){pSysMenu-AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}SetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m_hIcon,FALSE);//Setsmalliconm_iNetPort=3127;四川师范大学成都学院m_Server.Initialize(this);m_bServer=FALSE;GetDlgItem(IDC_BN_CLOSE)-EnableWindow(FALSE);returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCServerDlg::OnSysCommand(UINTnID,LPARAMlParam){if((nID&0xFFF0)==IDM_ABOUTBOX){CAboutDlgdlgAbout;dlgAbout.DoModal();else{CDialog::OnSysCommand(nID,lParam);}}voidCServerDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);intcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;四川师范大学成都学院GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon;}else{CDialog::OnPaint();}}HCURSORCServerDlg::OnQueryDragIcon(){return(HCURSOR)m_hIcon;}voidCServerDlg::OnBnStart(){//创建套接字m_Server.Create(m_iNetPort);//开始监听m_Server.Listen();//显示CStringstrInfo;strInfo.LoadString(IDS_CREATE_SERVER);ShowInDisplay(strInfo);m_bServer=TRUE;GetDlgItem(IDC_BN_START)-EnableWindow(FALSE);GetDlgItem(IDC_BN_CLOSE)-EnableWindow(TRUE);四川师范大学成都学院}voidCServerDlg::OnBnClose(){CloseServer();GetDlgItem(IDC_BN_START)-EnableWindow(TRUE);GetDlgItem(IDC_BN_CLOSE)-EnableWindow(FALSE);}voidCServerDlg::OnAccept()//创建新客户CMySocket*pNewClient=newCMySocket;pNewClient-Initialize(this);m_Server.Accept(*pNewClient);//放入链表中m_lsClient.AddTail(pNewClient);}voidCServerDlg::OnClientClose(WPARAMwParam,LPARAMlParam){CMySocket*p_delClient=(CMySocket*)wParam;//关闭该用户p_delClient-ShutDown();char
本文标题:简单聊天程序的设计与实现课程设计
链接地址:https://www.777doc.com/doc-5618420 .html