欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    实验6:基于MFC CAsyncSocket类的网络通信.docx

    • 资源ID:1135365       资源大小:316.99KB        全文页数:16页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验6:基于MFC CAsyncSocket类的网络通信.docx

    实验6:基于MFCCASy1ICSoCket类的网络通信1实验目的与要求令掌握MFC的CSocket类、CAsyncSocket类的用法。掌握使用CAsyncSocket类进行网络程序设计的工作流程。Q能运用CAsyncSocket类开发一个简单的网络聊天程序。2实验设备与实验环境令连接到互联网上的IBMPe机两台。令硬件要求:InteIPenIiUm5处理器、256MB以上内存,EIhemet网卡,网线若干。令软件要求:MSWindoWS2000/XP操作系统,TCP/IP协议,Visua1C+6.0/.NET3实验内容与步骤3.1服务器的开发3.1.1工程的创建在VC6.0的环境中新建一个名为ChatSeVer的基于对话框的工程,创建步骤如图1图4所示,并在创建过程的第2步中选中SOCke1选项(如图3所示)。在生成的工程中设置通信的端口号,木例设为5678,设置方法是在CChaISeVerD1g.h头文件的开始处定义一个宏,如下所示:#defineiPort5678Sing1edocumentCMu1tip1edocumentsWhattypeofapp1icationwou1dyou1iketocreate?JJ×JWhat1anguagewou1dyou1ikeyourresourcesIn?I中文冲国I(APPWZCHSQUj3<QackNext>finishCance1图23.1.2 界面的设计将服务器程序的界面设计成如图5所示。3.1.3 图53.1.4 各控件的属性设置给各控件设置属性,如表1所示表1控件类型IDCaption说明按钮Idcance1取消退出程序按钮IDC_BTN_SER_OPEN打开服务器打开服务器并使之监听按钮IDC_BTN_SER_C1OSE关闭服务器将服务器关闭按钮IDC_BTN_DISCONNECT断开连接和客户端断开连接按钮1DC_BTN_MSG_SEND发送将编辑框中的文本发送到对方列表框IDC_1IST_MSG显示双方的对话记录文本编辑框IDC_EDIT_MSG输入需要发送的文本3.1.5 给控件映射变量给控件映射变量,具体如表2所示表2控件ID变量类属Category变量类型Variab1etype变量名MemberVariab1enameIDC_1IST_MSGContro1C1istBoxmisi_msg1DC_EDIT_MSGVa1ueCStringm_edit_msg具体的映射过程如下:(1)右键单击需映射变量的控件,在弹出的菜单中选中C1assWizard选项,如图6所示。(2) 在弹出的对话框的第二个标签页(MemberVariab1eS)中选中需映射变量的控件的ID,然后点击右侧的AddVariab1e按钮,如图7所示。(3) 在弹出的变量设置对话框中,选择变量类属、变量类型,输入变量名称,然后点击OK,如图8所示。1hatSever<IDO_(HATSCVfR.DIMOG(DMM)IS9»WXXgtHKiH0X必卜2JCCh1ScvefOfJDCJJSFCJD制(Xh=SerOsJM.MSG*)1BN.SC1CHANGE三区.'.IEK*i1<XbttMkFux1U.Fi1erIXFwfIUiF11tf12>¾ydtj<jIgs一EditathewHk4t0dasef1andtte«reourcettcodeAddMemberVariab1e-Zj×1Membervariab1ename:|m_1ist_msg|Category:恃IContro1-Variab1etype:IC1istBox3Description:maptoC1istBoxmemberOKCance13.1.4添加派生类由于我们的程序在通信过程中需要使用MFCCASynCSOCket类进行通信,因此需要在工程中添加一个CASynCSoCket类的派生类,为了以后编程方便,我们将派生类的说明和实现分别放在ChatSeverD1g.h和ChatSeverD1gxpp文件中,添加过程如下:(1) 点击Insert下的NewC1ass菜单(如图9所示);(2) 在弹出的对话框中作如图10所示的设置,点击图中的Change按钮来设置h头文件和.cpp实现文件。(3) 在弹出的Changefi1eS对话框中点击BroWSe按钮(如图11所示)。(4) 在弹出的Browsefi1es对话框中选中ChatSeverD1g.h文件(如图12所示)。(5) 重更(3)、(4)两步,将.cpp实现文件设置为ChatSeVerDIg.cpp文件。图9图113.1.5 图123.1.6 给CMySoCket类添加重载虚拟函数我们给CMySoCket类添加如下几个重载虚拟函数:OnACCept、OnConnectOnC1oSe、OnSend'OnReceive,添加过程如下:(I)在类视图中右键单击CMySoCket类,在弹出菜单中选择AddVirtua1Function项,如图13所示;(2) 在弹出对话框中选中OnACCePt并点击右侧的AddandEdit按钮(如图14所示);(3)重复、(2)两步,添力口OnConnect、OnC1ose>OnSend¼OnReCeiVe函数。3.1.73.1.8 给CChatSeverD1g类添加成员变量和自定义成员函数一、添加变量我们在CChatSeverD1g类中添加变量:mJiStensocketm_worksocket,变量类型均为CMySocket,访问类型为PUbIic,mJistensocket变量(监听套接字)用于监听客户端的连接请求,m-worksocket变量(通信套接字)用于和客户端进行数据接收和发送。添加过程如下:(1) 在类视图中右键单击CChatSeverD1g类,在弹出菜单中点击AddMemberVariab1e,如图15所示;(2) 在弹出的AddMemberVariab1e对话框的Variab1eType编辑框中输入CMySocket,在Variab1eName框中输入mistensocke1,Access设置为pub1ic,如图16所示;(3) 重复(1)、(2)两步,添加mWOrkSoCket变量。j1×Xa-|耽.|山.一|图16二、添加自定义成员函数为以后的与客户端的通信,我们给CChatSeVerD1g对话框类添加如下函数:accept()、recv()>SeCd()、connects、c1ose(),函数类型均为VOid,添加过程如下:(4) 在类视图中右键单击CChatSeverD1g类,在弹出菜单中点击AddMemberFunction,如图17所示;(5) 在弹出的AddMemberFunction对话框的FunctionType编辑框中输入void,在FUnCtiOnName框中输入accept(),ACCeSS设置为PUbIic,如图18所示;(6) 重复、(2)两步,添加recv()、Send()、connect。、C1OSe()函数。图17以上函数中,accept()函数用于服务器接受客户端的连接请求,connects用于客户端向服务器提出连接请求,Send()用于向对方发送数据,recv()用于接收对方发来的数据,c1ose()用于关闭通信套接字终止连接。3.1.9 添加代码一、给CMySoCket类成员函数添加代码(1)在CMySocket:OnAccept(intnErrorCode)成员函数的/TODO:Addyourspecia1izedcodehereand/orca11thebasec1ass后添加如下代码:if(nErrorCode=0)(CChatSeverD1g*p_D1g;p_D1g=(CChatSeverD1g*):AfxGetMainWnd();P-D1g->accept();)(2)在CMySocket:OnConnect(intnErrorCode)成员函数的/TODO:Addyourspecia1izedcodehereand/orca11thebasec1ass后添加如下代码:if(nErrorCode=0)(CChatSeverD1g*p_D1g;p_D1g=(CChatSeverD1g*):AfxGetMainWnd();P-D1g->connect();)(3)在CMySocket:OnReceive(intnErrorCode)成员函数的/TODO:Addyourspecia1izedcodehereand/orca11thebasec1ass后添加如下代码:if(nErrorCode=0)(CChatSeverD1g*p_D1g;p_D1g=(CChatSeverD1g*):AfxGetMainWnd();p_D1g->recv();)(4)在CMySOeket:OnC1ose(intnErrorCode)成员函数的TODO:Addyourspecia1izedcodehereand/orca11thebasec1ass后添加如下代码:if(nErrorCode=0)(CChatSeverD1g*p_D1g;p_D1g=(CChatSeverD1g*):AfxGetMainWnd();P-D1g->c1ose();)二、给CChatSeverDIg类成员函数添加代码给CChatSeVerDIg类的自定义成员函数分别添加如下代码:voidCChatSeverD1g:accept()(structsockaddr_inc1i;intIen=sizeof(c1i);CStringStr1pAddr;m_1istensocket.Accept(m_worksocket,(SOCKADDR*)<fcc1i,&1en);StrIpAddr=inet_ntoa(c1i.sin_addr);StrIpAddr="新的连接:"+StrIpAddr;AfxMessageBox(Str1pAddr);GetD1gItem(IDC_BTN_SER_C1OSE)->Enab1eWindow(fa1se);GetD1gItem(IDC-BTN.MSG-SEND)->Enab1eWindow(true);GetD1gItem(IDC_BTN_DISCONNECT)->Enab1eWindow(true);voidCChatSeverD1g:c1ose()(m_worksocket.C1ose();AfXMeSSageBOX("连接己经断开!,);GetD1gItem(IDC_BTN_SER_C1OSE)->Enab1eWindow(true);GetD1gItem(IDC_BTN_MSG_SEND)->Enab1eWindow(FA1SE);GetDIgItem(

    注意事项

    本文(实验6:基于MFC CAsyncSocket类的网络通信.docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 001doc.com网站版权所有   

    经营许可证编号:宁ICP备2022001085号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



    收起
    展开