开发手册 欢迎您!
软件开发者资料库

MFC - 互联网编程

MFC Internet编程 - 从简单和简单的步骤学习MFC,从基本到高级概念,包括概述,环境设置,VC ++项目,入门,Windows基础,对话框,Windows资源,属性表,Windows布局,控件管理,Windows控件,消息和事件,Activex控件,文件系统,标准I / O,文档视图,字符串,Carray,链接列表,数据库类,序列化,多线程,Internet编程,GDI,库。

Microsoft提供了许多用于编程客户端和服务器应用程序的API.许多新应用程序正在为Internet编写,随着技术,浏览器功能和安全选项的变化,将编写新类型的应用程序.您的自定义应用程序可以检索信息并在Internet上提供数据.

MFC提供了一个类 CSocket ,用于使用Windows套接字编写网络通信程序.

这是CSocket类中的方法列表.

Sr.No.名称&说明
1

Attach

将SOCKET句柄附加到CSocket对象.

2

CancelBlockingCall

取消阻止通话目前正在进行中.

3

Create

创建一个套接字.

4

FromHandle

返回指向一个CSocket对象,给定一个SOCKET句柄.

5

IsBlocking

确定阻止呼叫是否正在进行中.

让我们通过创建一个MFS SDI应用程序来看一个简单的例子.

MFCServer

第1步 : 在名称字段中输入MFCServer,然后单击"确定".

MFCServer

第2步 : 在"高级功能"选项卡上,选中"Windows套接字"选项.

步骤3 : 创建项目后,添加一个新的MFC类CServerSocket.

MFCServer

第4步 : 选择CSocket作为基类,然后单击Finish.

步骤5 : 添加更多MFC类CReceivingSocket.

MFCServer

第6步 :  CRecevingSocket将接收来自客户端的传入消息.

在CMFCServerApp中,头文件包含以下文件 :

#include "ServerSocket.h"#include "MFCServerView.h"


第7步 : 在CMFCServerApp类中添加以下两个类变量.

CServerSocket m_serverSocket;CMFCServerView m_pServerView;


第8步 : 在CMFCServerApp :: InitInstance()方法中,创建套接字并指定端口,然后调用Listen方法,如下所示.

m_serverSocket.Create(6666);m_serverSocket.Listen();


第9步 : 在CMFCServerView头文件中包含以下头文件.

#include "MFCServerDoc.h"


第10步 : 覆盖Socket类中的OnAccept函数.

MFCServer

第11步 : 在类视图中选择CServerSocket,在"属性"窗口中选择突出显示的图标.现在,添加OnAccept.这是OnAccept函数的实现.

void CServerSocket::OnAccept(int nErrorCode) {   // TODO: Add your specialized code here and/or call the base class   AfxMessageBox(L"Connection accepted");   CSocket::OnAccept(nErrorCode);}


第12步 : 添加OnReceive()函数.

void CServerSocket::OnReceive(int nErrorCode) {       // TODO: Add your specialized code here and/or call the base class   AfxMessageBox(L"Data Received");   CSocket::OnReceive(nErrorCode); }


第13步 : 在CReceivingSocket类中添加OnReceive()函数.

右键单击解决方案资源管理器中的CMFCServerView类,然后选择Add →  AddFunction.

MFCServer

步骤14 &减去;输入上述信息并单击"完成".

步骤15 : 在CMFCServerView头文件中添加以下CStringArray变量.

CStringArray m_msgArray;


第16步 : 这是AddMsg()函数的实现.

void CMFCServerView::AddMsg(CString message) {   m_msgArray.Add(message);   Invalidate(); }


第17步 : 更新构造函数,如下面的代码所示.

CMFCServerView::CMFCServerView() {   ((CMFCServerApp*)AfxGetApp()) -> m_pServerView = this; }


步骤18 : 这是OnDraw()函数的实现,它显示消息.

void CMFCServerView::OnDraw(CDC* pDC) {   int y = 100;   for (int i = 0; m_msgArray.GetSize(); i++) {         pDC->TextOut(100, y, m_msgArray.GetAt(i));      y += 50;   }   CMFCServerDoc* pDoc = GetDocument();   ASSERT_VALID(pDoc);   if (!pDoc)      return;   // TODO: add draw code for native data here}


步骤19 : 服务器端现已完成.它将从客户端收到消息.

创建客户端应用程序

步骤1 : 让我们为客户端应用程序创建一个新的基于MFC对话框的应用程序.

Client Side


客户端

第2步&减号;在高级功能选项卡上,检查Windows套接字选项,如上所示.

步骤3 : 创建项目后,设计对话框,如下图所示.

客户端

第4步 : 为连接和发送按钮添加事件处理程序.

步骤5 : 为所有三个编辑控件添加值变量.对于端口编辑控件,选择变量类型UINT.

Client Side

第6步 : 添加MFC类以连接和发送消息.

客户端

第7步 : 在头文件CMFCClientDemoApp类中包含CClientSocket类的头文件,并添加类变量.同样,也可以在CMFCClientDemoDlg头文件中添加类变量.

CClientSocket m_clientSocket;


第8步 : 这是Connect按钮事件处理程序的实现.

void CMFCClientDemoDlg::OnBnClickedButtonConnect() {   // TODO: Add your control notification handler code here   UpdateData(TRUE);   m_clientSocket.Create();   if (m_clientSocket.Connect(m_ipAddress, m_port)) {      AfxMessageBox(L"Connection Successfull");   }else {      AfxMessageBox(L"Connection Failed");   }   DWORD error = GetLastError(); }


第9步 : 以下是发送按钮事件处理程序的实现.

void CMFCClientDemoDlg::OnBnClickedButtonSend() {   // TODO: Add your control notification handler code here   UpdateData(TRUE);   if (m_clientSocket.Send(m_message.GetBuffer(m_message.GetLength()), m_message.GetLength())) {      }else {      AfxMessageBox(L"Failed to send message");   }}


第10步 : 首先运行Server应用程序,然后运行客户端应用程序.输入本地主机IP和端口,然后单击连接.

客户端

步骤11 : 您现在将在服务器端看到如下快照所示的消息.

客户端