MFC socket编程

MFC socket编程

ID:41037300

大小:65.92 KB

页数:19页

时间:2019-08-14

MFC socket编程_第1页
MFC socket编程_第2页
MFC socket编程_第3页
MFC socket编程_第4页
MFC socket编程_第5页
资源描述:

《MFC socket编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、socket编程用法----随着计算机网络化的深入,计算机网络编程在程序设计的过程中变得日益重要。由于C++语言对底层操作的优越性,许多文章都曾经介绍过用VC++进行Socket编程的方法。但由于都是直接利用动态连接库wsock32.dll进行操作,实现比较繁琐。其实,VC++的MFC类库中提供了CAsyncSocket这样一个套接字类,用他来实现Socket编程,是非常方便的。----本文将用一个Echo例程来介绍CAsyncSocket类的用法。----一.客户端----1.创建一个DialogBased项目:CSockClient。----2.设计对话框-

2、---去掉Ok和Cancle两个按钮,增加ID_Connect(连接)、ID_Send(发送)、ID_Exit(关闭)按钮,增加ListBox控件IDC_LISTMSG和Edit控件IDC_EDITMSG,并按下表在ClassWizard中为CCSockClientDlg类添加变量。ControlIDTypeMember    IDC_EDITMSGCEditm_MSGIDC_LISTMSGClistBoxm_MSGS----3.CAsyncSocket类用DoCallBack函数处理MFC消息,当一个网络事件发生时,DoCallBack函数按网络事件类型:FD

3、_READ、FD_WRITE、FD_ACCEPT、FD_CONNECT分别调用OnReceive、OnSend、OnAccept、OnConnect函数。由于MFC把这些事件处理函数定义为虚函数,所以要生成一个新的C++类,以重载这些函数,做法如下:----以Public方式继承CAsyncSocket类,生成新类MySock;----为MySock类添加虚函数OnReceive、OnConnect、OnSend----4.在MySock.ccp中添加以下代码#include"CSockClient.h"#include"CSockClientDlg.h"---

4、-5.在MySock.h中添加以下代码public:     BOOLm_bConnected;   //是否连接     UINTm_nLength;       //消息长度     charm_szBuffer[4096];   //消息缓冲区----6.在MySock.ccp中重载各函数MySock::MySock(){m_nLength=0;memset(m_szBuffer,0,sizeof(m_szBuffer));m_bConnected=FALSE;}MySock::~MySock(){//关闭套接字if(m_hSocket!=INVALID_

5、SOCKET)     Close();}voidMySock::OnReceive(intnErrorCode){m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);//下面两行代码用来获取对话框指针CCSockClientApp*pApp=(CCSockClientApp*)AfxGetApp();CCSockClientDlg*pDlg=(CCSockClientDlg*)pApp->m_pMainWnd;pDlg->m_MSGS.InsertString(0,m_szBuffer);memset(m_sz

6、Buffer,0,sizeof(m_szBuffer));CAsyncSocket::OnReceive(nErrorCode);}voidMySock::OnSend(intnErrorCode){Send(m_szBuffer,m_nLength,0);m_nLength=0;memset(m_szBuffer,0,sizeof(m_szBuffer));//继续提请一个“读”的网络事件,接收Server消息AsyncSelect(FD_READ);CAsyncSocket::OnSend(nErrorCode);}voidMySock::OnConnect

7、(intnErrorCode){if(nErrorCode==0){     m_bConnected=TRUE;     CCSockClientApp*pApp=(CCSockClientApp*)AfxGetApp();     CCSockClientDlg*pDlg=(CCSockClientDlg*)pApp->m_pMainWnd;     memcpy(m_szBuffer,"Connectedto",13);     strncat(m_szBuffer,pDlg->m_szServerAdr,         sizeof(pDlg->m_s

8、zServerAdr))

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。