c++课程设计网络聊天室Word文档下载推荐.docx

上传人:b****6 文档编号:19804199 上传时间:2023-01-10 格式:DOCX 页数:4 大小:18.38KB
下载 相关 举报
c++课程设计网络聊天室Word文档下载推荐.docx_第1页
第1页 / 共4页
c++课程设计网络聊天室Word文档下载推荐.docx_第2页
第2页 / 共4页
c++课程设计网络聊天室Word文档下载推荐.docx_第3页
第3页 / 共4页
c++课程设计网络聊天室Word文档下载推荐.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++课程设计网络聊天室Word文档下载推荐.docx

《c++课程设计网络聊天室Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c++课程设计网络聊天室Word文档下载推荐.docx(4页珍藏版)》请在冰豆网上搜索。

c++课程设计网络聊天室Word文档下载推荐.docx

本系统分为两个部分,分别为服务器端和客户端,其主要功能介绍如下:

2.1.服务器端功能l通过对Socket进行初始化,来简单创建服务器l通过定义变量来保存本机的IP地址,方便与客户端输入的IP地址进行比较,判断用户是否登入成功。

l通过一个文本框控件,来接收用户发送的信息。

l服务器端在初始化时首先需要为系统设置一个专用端口,以方便和客户端进行通信。

2.2.客户端功能客户端操作主要分2个步骤,在使用客户端系统时,用户首先需要设置要登录的IP地址,此处所填写的IP地址需要和服务器端的本机IP地址一致,平且输入正确的端口,方能登录成功。

当登录成功之后,用户可以在输入文本框中输入要发送的信息,点击发送按钮来实现发送,系统将会把信息发送到与其通信的服务器端界面中,以这样的原理俩实现客户端和服务器端两者之间的通信功能。

3.详细设计3.1.服务端实现本系统采用VC6.0为开发工具,在实际开发中,首先创建一个工程项目,然后在相应位置添加一个窗体,来展示信息。

主要的界面布局情况如下图:

3.1.1.服务端布局服务器端的开发主要分两个阶段,首先开发端口设置功能,该功能是供管理员在打开服务器端时,设置一个特殊的网络端口,方便后面供客户端来使用;

其次是主界面的开发,该步骤中中,主要是使用了一个文本框控件来存放接收客户端所传送的信息。

其主要开发代码如下:

#include“stdafx.h“#include“ChatSvr.h“#include“InitDlg.h“#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;

#endifCInitDlg:

:

CInitDlg(CWnd*pParent/*=NULL*/):

CDialog(CInitDlg:

IDD,pParent){//{{AFX_DATA_INIT(CInitDlg)m_nPort=0;

//}}AFX_DATA_INIT}voidCInitDlg:

DoDataExchange(CDataExchange*pDX){CDialog:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CInitDlg)DDX_Text(pDX,IDC_EDIT1,m_nPort);

//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CInitDlg,CDialog)END_MESSAGE_MAP()核心代码如下:

#include“stdafx.h“#include“ChatSvr.h“#include“ChatSvrDlg.h“#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;

#endifBEGIN_MESSAGE_MAP(CChatSvrApp,CWinApp)ON_COMMAND(ID_HELP,CWinApp:

OnHelp)END_MESSAGE_MAP()CChatSvrApp:

CChatSvrApp(){}CChatSvrApptheApp;

BOOLCChatSvrApp:

InitInstance(){if(!

AfxSocketInit()){AfxMessageBox(IDP_SOCKETS_INIT_FAILED);

returnFALSE;

}AfxEnableControlContainer();

#ifdef_AFXDLLEnable3dControls();

#elseEnable3dControlsStatic();

#endifCChatSvrDlgdlg;

m_pMainWnd=intnResponse=dlg.DoModal();

if(nResponse==IDOK){}elseif(nResponse==IDCANCEL){}returnFALSE;

}3.2.客户端实现客户端主要是用户通过设置端口和IP地址来与服务器端想链接,从而实现系统之间的通信功能,当链接成功之后,用户进入到系统主要界面,用户可以在输入区域来输入信息,通过点击发送来发送信息到服务器端,从而实现两者之间的通信功能,其主要界面如下:

3.2.1.客户端布局客户端的功能实现,主要有验证输入信息是否正确,和通过验证之后且建立了通信之后,在实现发送信息功能,将信息发送到服务器端,实现两者之间的信息传送,从而达到客户端和服务器之间的聊天效果,其主要代码如下:

(输入端口和IP信息窗口代码)#include“stdafx.h“#include“ChatClient.h“#include“SetupDlg.h“#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;

#endifCSetupDlg:

CSetupDlg(CWnd*pParent/*=NULL*/):

CDialog(CSetupDlg:

IDD,pParent){//{{AFX_DATA_INIT(CSetupDlg)m_strName=_T(““);

m_strServer=_T(““);

m_nPort=0;

//}}AFX_DATA_INIT}voidCSetupDlg:

//{{AFX_DATA_MAP(CSetupDlg)DDX_Text(pDX,IDC_NAME,m_strName);

DDX_Text(pDX,IDC_SERVER,m_strServer);

DDX_Text(pDX,IDC_PORT,m_nPort);

//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CSetupDlg,CDialog)//{{AFX_MSG_MAP(CSetupDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()voidCSetupDlg:

OnOK(){//TODO:

AddextravalidationhereCDialog:

OnOK();

}voidCSetupDlg:

OnCancel(){//TODO:

AddextracleanuphereCDialog:

OnCancel();

}(客户端主窗体窗口代码)#include“stdafx.h“#include“ChatClient.h“#include“ChatClientDlg.h“#include“ChatSocket.h“#include“SetupDlg.h“#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;

#endifclassCAboutDlg:

publicCDialog{public:

CAboutDlg();

//{{AFX_DATA(CAboutDlg)enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA//{{AFX_VIRTUAL(CAboutDlg)protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//DDX/DDVsupport//}}AFX_VIRTUAL//Implementationprotected:

//{{AFX_MSG(CAboutDlg)virtualvoidOnOK();

//}}AFX_MSGDECLARE_MESSAGE_MAP()};

CAboutDlg:

CAboutDlg():

CDialog(CAboutDlg:

IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}voidCAboutDlg:

//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)//{{AFX_MSG_MAP(CAboutDlg)//}}AFX_MSG_MAPEND_MESSAGE_MAP()//CChatClientDlgCChatClientDlg:

CChatClientDlg(CWnd*pParent/*=NULL*/):

CDialog(CChatClientDlg:

IDD,pParent){//{{AFX_DATA_INIT(CChatClientDlg)m_strMsg=_T(““);

m_strClientName=_T(““);

//}}AFX_DATA_INITm_hIcon=AfxGetApp()->

LoadIcon(IDR_MAINFRAME);

}voidCChatClientDlg:

//{{AFX_DATA_MAP(CChatClientDlg)DDX_Control(pDX,IDC_LIST_MSGS,m_ctrlMsgs);

DDX_Text(pDX,IDC_MSG,m_strMsg);

//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CChatClientDlg,CDialog)//{{AFX_MSG_MAP(CChatClientDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_SEND,OnSend)//}}AFX_MSG_MAPEND_MESSAGE_MAP()BOOLCChatClientDlg:

OnInitDialog(){CDialog:

OnInitDialog();

ASSERT((IDM_ABOUTBOXASSERT(IDM_ABOUTBOXAppendMenu(MF_SEPARATOR);

pSysMenu->

AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}}SetIcon(m_hIcon,TRUE);

SetIcon(m_hIcon,FALSE);

//显示登录对话框CSetupDlgdlg;

if(dlg.DoModal()==IDOK){//创建一个新的Socketm_pSocket=newCChatSocket(this);

if(!

m_pSocket->

Create()){deletem_pSocket;

m_pSocket=NULL;

AfxMessageBox(“createsocketfailed“);

}//连接服务器while(!

Connect(dlg.m_strServer,dlg.m_nPort+700)){if(AfxMessageBox(“Failedtoconnecttoserver\nTryagain?

“,MB_YESNO)==IDNO){deletem_pSocket;

}}m_strClientName=dlg.m_strName;

}elsereturnFALSE;

//发送登录消息给服务器SendMsg(“进入聊天室“);

returnTRUE;

//returnTRUE}voidCChatClientDlg:

OnSysCommand(UINTnID,LPARAMlParam){if((nIDdlgAbout.DoModal();

}else{CDialog:

OnSysCommand(nID,lParam);

}}voidCChatClientDlg:

OnPaint(){if(IsIconic()){CPaintDCdc(this);

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

dc.DrawIcon(x,y,m_hIcon);

OnPaint();

}}HCURSORCChatClientDlg:

OnQueryDragIcon(){return(HCURSOR)m_hIcon;

}//接收数据voidCChatClientDlg:

ProcessPendingRead(){//定义缓冲区charbuffer[BUFFER_SIZE];

//接收数据intnReceived=m_pSocket->

Receive(buffer,BUFFER_SIZE,0);

buffer[nReceived]=0;

//将数据在列表框中显示出来CStringstr;

str.Format(“%s“,buffer);

m_ctrlMsgs.AddString(str);

OnSend(){UpdateData(TRUE);

SendMsg(m_strMsg);

}//发送数据到服务器voidCChatClientDlg:

SendMsg(CStringstrMsg){CStringstr;

str.Format(“%s:

%s“,m_strClientName,strMsg);

m_pSocket->

Send(str.GetBuffer(0),str.GetLength(),0);

}voidCAboutDlg:

OnOK(){Dialog:

}4.系统调试l服务器端运行效果:

l客户端运行效果:

l发送消息效果:

5.结果分析根据需求分析中的基本要求,本系统基本完成了一个网络聊天功能的效果,能进行简单的聊天通信,系统主要是通过服务器端的本机IP地址为通信IP,来连接客户端和服务器端两者之间的通信功能,对于一个基本的通讯软件-网络聊天室,本系统已经基本实现了该效果与功能。

6.总结通过此次课程设计,让我认识到C++作为一门面向对象开发语言的好处,在此次开发过程中,遇见了很多从前在做实例过程中没有遇见的BUG,通过各种渠道来解决之后,让我从中学到了许多有用的知识,同时也提高了我独自解决一个问题的能力,作为一名程序员,在开发程序过程中肯定会遇见各种各样的困难和错误,只有通过不断的学习来积累这些知识的瑰宝,从而丰富自己的实践经验。

就像在此次开发过程中,为了实现网络通信功能,我必须通过网络和从书中查询来获取自己想要的知识,来解决在项目开发过程中的困难,在研究这些东西的同时,我也从中获取了很多新的、有用的知识;

而且也对自己的实际开发能力有所好处,开发程序就是不断解决BUG的过程,痛并快乐着。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1