网络程序设计课程设计vcmfc实现简单的聊天室程序.docx
《网络程序设计课程设计vcmfc实现简单的聊天室程序.docx》由会员分享,可在线阅读,更多相关《网络程序设计课程设计vcmfc实现简单的聊天室程序.docx(5页珍藏版)》请在冰豆网上搜索。
网络程序设计课程设计vcmfc实现简单的聊天室程序
网络程序设计课程设计--vc(mfc)实现简单的聊天室程序
网络程序设计课程设计--vc(mfc)实现简单的聊天室程序《网络程序设计》课程设计报告书题目:
简单的聊天室程序专业:
网络工程完成日期:
一、题目:
简单的聊天室程序要求:
本题是一个简单的聊天室程序,采用客户/服务器模式,分为客户端程序和服务器端程序。
由于服务器只能支持一个客户,实际上是一个点对点通信的程序。
客户端程序和服务器程序通过网络交换聊天字符串内容,并在窗口的列表框中显示。
l。
二、系统概要设计聊天室是分客户端和服务端两个应用程序的,两个应用程序要想实现交互必须编写相应的指令和识别指令的代码,我写的这是个指令依次是启动停止用户退出的命令,但用户想要进行以上动作中的任何一个时,在用户按下按键的时候,客户端都是向服务端发送相应的指令,再由服务端实际的执行。
三、系统详细设计对概要设计中提到的功能函数进行详细设计。
服务器端:
//ChatRoomServerDlg.cpp:
implementationfile//#include“stdafx.h“#include“ChatRoomServer.h“#include“ChatRoomServerDlg.h“#include“ListenSocket.h“#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////////////////////CAboutDlgdialogusedforAppAboutclassCAboutDlg:
publicCDialog{public:
CAboutDlg();//DialogData//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CAboutDlg)protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected:
//{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX){CDialog:
:
DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)//Nomessagehandlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CChatRoomServerDlgdialogCChatRoomServerDlg:
:
CChatRoomServerDlg(CWnd*pParent/*=NULL*/):
CDialog(CChatRoomServerDlg:
:
IDD,pParent){//{{AFX_DATA_INIT(CChatRoomServerDlg)//NOTE:
theClassWizardwilladdmemberinitializationhere//}}AFX_DATA_INIT//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}voidCChatRoomServerDlg:
:
DoDataExchange(CDataExchange*pDX){CDialog:
:
DoDataExchange(pDX);//{{AFX_DATA_MAP(CChatRoomServerDlg)DDX_Control(pDX,IDC_BUTTON_STOP,m_IDC_BUTTON_STOP);DDX_Control(pDX,IDC_BUTTON_START,m_IDC_BUTTON_START);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CChatRoomServerDlg,CDialog)//{{AFX_MSG_MAP(CChatRoomServerDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_START,OnButtonStart)ON_BN_CLICKED(IDC_BUTTON_STOP,OnButtonStop)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CChatRoomServerDlgmessagehandlersBOOLCChatRoomServerDlg:
:
OnInitDialog(){CDialog:
:
OnInitDialog();//Add“About.“menuitemtosystemmenu.//IDM_ABOUTBOXmustbeinthesystemcommandrange.ASSERT((IDM_ABOUTBOXASSERT(IDM_ABOUTBOXAppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}//Settheiconforthisdialog.Theframeworkdoesthisautomatically//whentheapplicationsmainwindowisnotadialogSetIcon(m_hIcon,TRUE);//SetbigiconSetIcon(m_hIcon,FALSE);//Setsmallicon//TODO:
Addextrainitializationherem_IDC_BUTTON_STOP.EnableWindow(FALSE);returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCChatRoomServerDlg:
:
OnSysCommand(UINTnID,LPARAMlParam){if((nIDdlgAbout.DoModal();}else{CDialog:
:
OnSysCommand(nID,lParam);}}//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,//thisisautomaticallydoneforyoubytheframework.voidCChatRoomServerDlg:
:
OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);//CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;//Drawtheicondc.DrawIcon(x,y,m_hIcon);}else{CDialog:
:
OnPaint();}}//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags//theminimizedwindow.HCURSORCChatRoomServerDlg:
:
OnQueryDragIcon(){return(HCURSOR)m_hIcon;}voidCChatRoomServerDlg:
:
OnButtonStart(){//TODO:
Addyourcontrolnotificationhandlercodeherem_IDC_BUTTON_START.EnableWindow(FALSE);//使启动按钮无效ListenSocket.Create(6767);//创建监听套接字端口为6767ListenSocket.Listen();//开始监听m_IDC_BUTTON_STOP.EnableWindow(TRUE);//将停止按钮激活}voidCChatRoomServerDlg:
:
OnButtonStop(){//TODO:
Addyourcontrolnotificationhandlercodeherem_IDC_BUTTON_STOP.EnableWindow(FALSE);//使停止按钮无效ListenSocket.Close();//关闭监听套接字m_IDC_BUTTON_START.EnableWindow(TRUE);//将启动按钮激活}//ChatRoomServer.h:
mainheaderfilefortheCHATROOMSERVERapplication//#if!
defined(AFX_CHATROOMSERVER_H__680EC642_E19B_4D55_88DF_2C9E9B1B30FD__INCLUDED_)#defineAFX_CHATROOMSERVER_H__680EC642_E19B_4D55_88DF_2C9E9B1B30FD__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#ifndef__AFXWIN_H__#errorincludestdafx.hbeforeincludingthisfileforPCH#endif#include“resource.h“//mainsymbols///////////////////////////////////////////////////////////////////////////////CChatRoomServerApp:
//SeeChatRoomServer.cppfortheimplementationofthisclass//classCChatRoomServerApp:
publicCWinApp{public:
CChatRoomServerApp();//Overrides//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CChatRoomServerApp)public:
virtualBOOLInitInstance();//}}AFX_VIRTUAL//Implementation//{{AFX_MSG(CChatRoomServerApp)//NOTE-theClassWizardwilladdandremovememberfunctionshere.//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSGDECLARE_MESSAGE_MAP()};///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.#endif//!
defined(AFX_CHATROOMSERVER_H__680EC642_E19B_4D55_88DF_2C9E9B1B30FD__INCLUDED_)//ChatRoomServerDlg.h:
headerfile//#if!
defined(AFX_CHATROOMSERVERDLG_H__5BE648B6_8A9C_4E90_BF1D_20FE943A525F__INCLUDED_)#defineAFX_CHATROOMSERVERDLG_H__5BE648B6_8A9C_4E90_BF1D_20FE943A525F__INCLUDED_#include“ClientSocketList.h“//AddedbyClassView#include“ListenSocket.h“//AddedbyClassView#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000///////////////////////////////////////////////////////////////////////////////CChatRoomServerDlgdialogclassCChatRoomServerDlg:
publicCDialog{//Constructionpublic:
CListenSocketListenSocket;CChatRoomServerDlg(CWnd*pParent=NULL);//standardconstructor//DialogData//{{AFX_DATA(CChatRoomServerDlg)enum{IDD=IDD_CHATROOMSERVER_DIALOG};CButtonm_IDC_BUTTON_STOP;CButtonm_IDC_BUTTON_START;//}}AFX_DATA//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CChatRoomServerDlg)protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected:
HICONm_hIcon;//Generatedmessagemapfunctions//{{AFX_MSG(CChatRoomServerDlg)virtualBOOLOnInitDialog();afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);afx_msgvoidOnPaint();afx_msgHCURSOROnQueryDragIcon();afx_msgvoidOnButtonStart();afx_msgvoidOnButtonStop();//}}AFX_MSGDECLARE_MESSAGE_MAP()};//{{AFX_INSERT_LOCATION}}//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.#endif//!
defined(AFX_CHATROOMSERVERDLG_H__5BE648B6_8A9C_4E90_BF1D_20FE943A525F__INCLUDED_)#if!
defined(AFX_CLIENTSOCKET_H__5B707F31_3AD5_4F47_B58E_ECFC99EB60F0__INCLUDED_)#defineAFX_CLIENTSOCKET_H__5B707F31_3AD5_4F47_B58E_ECFC99EB60F0__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000//ClientSocket.h:
headerfile/////////////////////////////////////////////////////////////////////////////////CClientSocketcommandtargetclassCClientSocketList;classCClientSocket:
publicCSocket{//Attributespublic:
//Operationspublic:
CClientSocket(CClientSocketList*);virtual~CClientSocket();//Overridespublic:
CClientSocketList*List;CClientSocket*Front;CClientSocket*Next;//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX_VIRTUAL(CClientSocket)public:
virtualvoidOnReceive(intnErrorCode);virtualvoidOnClose(intnErrorCode);//}}AFX_VIRTUAL//Generatedmessagemapfunctions//{{AFX_MSG(CClientSocket)//NOTE-theClassWizardwilladdandremovememberfunctionshere.//}}AFX_MSG//Implementationprotected:
};///////////////////////////////////////////////////////////////////////////////{{AFX_INSERT_LOCATION}}//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.#endif//!
defined(AFX_CLIENTSOCKET_H__5B707F31_3AD5_4F47_B58E_ECFC99EB60F0__INCLUDED_)//ClientSocketList.h:
interfacefortheCClientSocketListclass.////////////////////////////////////////////////////////////////////////#if!
defined(AFX_CLIENTSOCKETLIST_H__E746355D_FA10_4D12_B544_2FF152C16414__INCLUDED_)#defineAFX_CLIENTSOCKETLIST_H__E746355D_FA10_4D12_B544_2FF152C16414__INCLUDED_#include“ClientSocket.h“#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000classCClientSocketList{public:
BOOLSends(CClientSocket*);BOOLAdd(CClientSocket*);CClientSocket*Head;CClientSocketList();virtual~CClientSocketList();};#endif//!
defined(AFX_CLIENTSOCKETLIST_H__E746355D_FA10_4D12_B544_2FF152C16414__INCLUDED_)#if!
defined(AFX_LISTENSOCKET_H__5D655304_370E_4680_A556_E417552D24EC__INCLUDED_)#defineAFX_LISTENSOCKET_H__5D655304_370E_4680_A556_E417552D24EC__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000//ListenSocket.h:
headerfile//#include“ClientSocketList.h“///////////////////////////////////////////////////////////////////////////////CListenSock