首页 > 编程语言 >无涯教程-MFC - 网络编程

无涯教程-MFC - 网络编程

时间:2023-12-11 13:32:03浏览次数:29  
标签:MFC 头文件 步骤 编程 无涯 应用程序 添加 CMFCServerView CSocket

Microsoft提供了许多用于对客户端和服务器应用程序进行编程的API,正在为互联网编写许多新应用程序,并且随着技术,浏览器功能和安全选项的变化,将编写新类型的应用程序。

MFC提供了一个 CSocket 类,用于使用Windows Sockets编写网络通信程序。

这是CSocket类中方法的列表。

Sr.No. Name & 描述
1

Attach

将SOCKET句柄附加到CSocket对象。

2

CancelBlockingCall

取消当前正在进行的阻止呼叫。

3

Create

创建一个Socket。

4

FromHandle

给定SOCKET句柄,返回指向CSocket对象的指针。

5

IsBlocking

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

让无涯教程通过创建MFS SDI应用程序来研究一个简单的示例。

MFCServer

步骤1 -在名称字段中输入MFCServer,然后单击"OK"。

MFCServer

步骤2 - 在"Advanced Features"标签上,选中" WindowsSocket"选项。

步骤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()方法中,创建Socket并指定端口,然后如下所示调用Listen方法。

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

步骤9 - 在CMFCServerView头文件中包含以下头文件。

#include "MFCServerDoc.h"

步骤10 - 从Socket类覆盖OnAccept函数。

MFCServer

步骤11 - 在类视图中选择CServerSocket,然后在"Properties"窗口中选择突出显示的图标,现在,添加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()函数。

在Solution Explorer中右键单击CMFCServerView类,然后选择添加→AddFunction。

MFCServer

步骤14 - 输入上述信息,然后单击"Finish"。

步骤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 SideClient Side

步骤2 - 在"Advanced Features"标签上,检查WindowsSocketoptions,如上所示。

步骤3 - 创建项目后,设计对话框,如以下快照所示。

Client Side

步骤4 - 为"Connect"和"Send"按钮添加事件处理程序。

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

Client Side

步骤6 - 添加用于连接和发送消息的MFC类。

Client Side

步骤7 - 将CClientSocket类的头文件包含在头文件CMFCClientDemoApp类中,并添加类变量。同样,在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 - 这是"Send"按钮事件处理程序的实现。

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 - 首先运行服务器应用程序,然后运行客户端应用程序。输入本地主机的IP和端口,然后单击"Connect"。

Client Side

步骤11 - 现在,您将在服务器端看到该消息,如以下快照所示。

Client Side

参考链接

https://www.learnfk.com/mfc/mfc-internet-programming.html

标签:MFC,头文件,步骤,编程,无涯,应用程序,添加,CMFCServerView,CSocket
From: https://blog.51cto.com/u_14033984/8771900

相关文章

  • 无涯教程-MFC - 文件系统
    在本章中,无涯教程将讨论文件系统的各个组成部分。Drives驱动驱动器是连接到计算机的物理设备,因此它可以存储信息,逻辑磁盘,逻辑卷或虚拟磁盘(简称VD或vdisk)是一种虚拟设备,可在计算机系统中的一个或多个物理磁盘驱动器上提供可用存储区域。驱动器可以是硬盘,CDROM,DVDROM,闪存(USB......
  • 无涯教程-MFC - 消息和事件
    应用程序由各种对象组成,大多数情况下,计算机上运行着多个应用程序,并且不断要求操作系统执行一些任务。Map消息由于Windows是面向消息的操作系统,因此Windows环境的大部分编程都涉及消息处理,每一个事件,例如一个键盘或鼠标点击发生时,一个消息被发送到该应用程序,然后必须处理该事件......
  • 无涯教程-MFC - 窗口控件
    Windows控件是用户可以与之交互以输入或操作数据的对象,它们通常出现在对话框或工具栏上。Sr.No.Controls&描述1StaticControl静态Static控件向用户显示信息,它可以用于显示颜色,几何形状或图片,如图标,位图或动画。2AnimationControl动画控件是一个以AVI格式显示音频剪......
  • MFC对话框显示时背景闪烁
    在显示一个对话框时,可以在WM_PAINT消息处理函数中绘制窗口的背景色。但会出现一种情况,在还未执行完OnPaint函数,对话框已经先显示出白色窗体,如下:还未绘制窗体,背景色先被显示。解决办法:1、添加WM_CTLCOLOR消息。2、在消息响应函数中添加如下代码:1HBRUSHCZGDlg::OnCtlColor......
  • Java并发编程的高级探索
    随着多核处理器的普及,Java并发编程变得越来越重要。为了充分利用硬件资源,开发者需要掌握并发模式和算法、锁的优化技术、并发工具的高级应用,以及并发程序的性能分析方法。并发模式和算法在并发编程中,特定的模式和算法可以帮助我们解决一些复杂的问题:生产者-消费者模式:在多线程环境......
  • 无涯教程-MFC - 控件管理
    在MFC应用程序中,以可视方式将控件添加到应用程序后,如果要在代码中引用它,则可以基于该控件或与该控件关联来声明变量。MFC库允许您为应用程序中使用的某些控件声明值或控件变量的两种类型的变量。一个变量用于存储在控件中的信息,也称为ControlVariable/Instance.另一个变量称......
  • MFC窗口闪烁问题
    本文引自:《VC窗口闪烁问题的解决》概述一般的windows复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小时候出现闪烁。闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上,而是写到了显存里,显卡......
  • 无涯教程-MFC - 对话框
    在本章中,无涯教程将介绍对话框(Dialog),Windows应用程序经常通过对话框与用户通信,CDialog类提供了用于管理对话框的界面,VisualC++对话框编辑器使设计对话框和创建其对话框模板资源变得容易。创建对话3对象是两阶段操作-构造对话框对象。创建对话框窗口。通过创建一个新的W......
  • 无涯教程-MFC - 环境设置
    MicrosoftVisualC++是用于为MicrosoftWindows操作系统创建应用程序的编程环境。要在C++应用程序中使用MFC框架,必须已安装MicrosoftVisualC++或MicrosoftVisualStudio,MicrosoftVisualStudio还包含MicrosoftVisualC++环境。Microsoft提供了VisualStudio的免费版......
  • 无涯教程-MFC - VC++项目
    VisualStudio包括几种VisualC++项目模板,这些模板有助于创建基本程序结构,菜单,工具栏,图标,并包含适合您要创建的项目类型的语句。在MFC中,您可以使用以下项目模板。Sr.No.Remark1MFCApplicationMFC应用程序是基于Microsoft基础类(MFC)库的Windows可执行应用程序,创建MF......