《利用MFC的Csocket类实现网络通信课件》由会员分享,可在线阅读,更多相关《利用MFC的Csocket类实现网络通信课件(22页珍藏版)》请在金锄头文库上搜索。
1、实验三 VC+6.0中利用MFC的CSocket类实现网络通信1利用MFC的Csocket类实现网络通信简单的用户界面服务器界面客户端界面2利用MFC的Csocket类实现网络通信程序的运行使用说明在一台计算机上同时运行客户端和服务器,服务器使用端口号为6000(或其它1024以后的端口号),客户端使用默认的端口号。显然客户端和服务器的ip地址均为 127.0.0.1服务器端单击“侦听”按钮客户端单击“连接”按钮(若服务器端已处于“侦听”状态则弹出对话框“连接成功”,否则弹出对话框“连接失败”并等待下一次单击“连接”按钮)客户端输入要发送的信息,单击“发送”按钮服务器端单击“接收”按钮,接收到
2、客户端发来的信息3利用MFC的Csocket类实现网络通信服务器端的创建(1)新建工程LXServer4利用MFC的Csocket类实现网络通信服务器端的创建(2)创建的程序类型为“基本对话”5利用MFC的Csocket类实现网络通信服务器端的创建(3) 选择Windows Sockts支持6利用MFC的Csocket类实现网络通信服务器端的创建(4)接下来几步直接点击“下一步”,直到下面对话框单击“完成”7利用MFC的Csocket类实现网络通信服务器端的创建(5)界面制作8利用MFC的Csocket类实现网络通信添加控件(以客户端界面为例)9利用MFC的Csocket类实现网络通信服务器端
3、的创建(6)编辑界面,对界面上的控件点击右键,选择属性选项,可以修改ID(把ID改为有意义的名字)和标题界面上没有控件的地方点击右键,弹出菜单,单击“建立类向导”(或者英文版叫Class Wizard),为每个控件添加变量。注意控件ID、变量类型、变量名(参看下页“建立类向导”)10利用MFC的Csocket类实现网络通信服务器端的创建(7)建立类向导控件控件IDID11利用MFC的Csocket类实现网络通信服务器端的创建(8)新建Csocket的派生类Cserver为了处理CSocket得到的消息,新建CSocket的派生类CServer(参看上页“建立类向导”或者实验指导书P18)12利
4、用MFC的Csocket类实现网络通信服务器端的创建(9)为了防止用户未点击“侦听”就点击“接收”,令初始的界面“接收”按钮无效,在BOOL CLXServer:OnInitDialog()的末尾添加/ TODO: Add extra initialization herem_BTNRecv.EnableWindow(FALSE); /使接收按钮无效在LXServerDlg.h里添加 #include “Server.h“,即包含CServer类的头文件在CLXServerDLG类中添加两个Cserver类的对象m_server与m_recv, 即在LXServerDlg.h里添加 priva
5、te: CServer m_Server; /用于创建端口 CServer m_Recv; /用于绑定对方IP地址和端口号13利用MFC的Csocket类实现网络通信服务器端的创建(10)界面的控件“侦听”按钮上双击,添加如下代码void CLX2Dlg:OnBtnListen() / TODO: Add your control notification handler code herem_Server.Create(6000); /新建端口6000m_Server.Listen(); /侦听m_Server.Accept(m_Recv); /侦听到的ip地址和端口号绑定到m_Recvm_
6、BTNRecv.EnableWindow(TRUE); /接收按钮有效m_BTNListen.EnableWindow(FALSE); /侦听按钮无效14利用MFC的Csocket类实现网络通信服务器端的创建(11)界面的控件“接收”按钮上双击,添加如下代码void CLX2Dlg:OnBtnRecv() / TODO: Add your control notification handler code here char buf255=;m_Recv.Receive(buf,255); /接收消息到bufCString s_msg;s_msg.Format(“%s”,buf); /buf的
7、值传到字符串s_msgm_EDTValue=m_EDTValue+s_msg;UpdateData(FALSE); /变量值传到界面上15利用MFC的Csocket类实现网络通信客户端创建(1)新建工程LXClient,设计界面如下16利用MFC的Csocket类实现网络通信客户端创建(2)修改控件ID,通过“新建类向导”为控件添加变量17利用MFC的Csocket类实现网络通信客户端的创建(3)程序关闭时关闭端口通过“建立类向导”,添加WM_DESTROY消息响应函数1单击2单击确定18利用MFC的Csocket类实现网络通信客户端创建(4)关闭端口代码添加关闭端口代码19利用MFC的Cso
8、cket类实现网络通信客户端创建(5)初始化时添加代码,即在 BOOL CLXClientDlg:OnInitDialog()的末尾添加下面代码s_ip=CString(“127.0.0.1”); /默认的目的ip地址UpdateData(FALSE); /变量的值传到界面上c_BTNSend.EnableWindow(FALSE);/发送按钮失效20利用MFC的Csocket类实现网络通信客户端的创建(6) “连接”按钮代码void CLXClientDlg:OnBtnConnect()/连接按钮相关代码/ TODO: Add your control notification handle
9、r code hereUpdateData(TRUE);/界面上的数据传到变量上,更新ip地址m_client.Create(); /创建端口,采用默认的端口号if(m_client.Connect(s_ip,6000)/连接目标地址,6000端口MessageBox(Client 端连接成功);c_BTNSend.EnableWindow(TRUE); /连接成功,可以发送c_BTNConnect.EnableWindow(FALSE);/禁止再连接elseMessageBox(“Client 端连接不成功”);21利用MFC的Csocket类实现网络通信客户端的创建(7) “发送”按钮代码void CLXClientDlg:OnBtnSend() / TODO: Add your control notification handler code hereUpdateData(TRUE); /界面的值传给变量m_client.Send(s_send,255);22利用MFC的Csocket类实现网络通信