文档章节

VC++ 函数指针实现被动传输数据

zjb1025
 zjb1025
发布于 2015/06/06 10:48
字数 529
阅读 11
收藏 0

    在使用VS2010开发项目时,经常需要实现一些动态的DLL库的开发,其在开发过程中,需要dll能自动调用回调函数,实现数据传输。因此,在项目中,需要使用到函数的指针,函数的指针能很好的解决该问题。下面采用socket的通信为例。

    在我们认知的socket的通信模型中,其采用cs经典模型,为了使我们的代码具有更好的可移植复用性,一般讲,socket的直接通信层进行封装成DLL,作为我们以后开发的基础类。

            Client                                        Server                                                    设备

                |    ----连接------------------> |                                                              |

                |   < ---响应 ------------------ |   <-----------建立通信---------------->  |

                |   ----------命令-设置------>  |   <-----------建立获取数据类型------->  |

                |  <-----------响应-----------  |   <---------   传输数据  ---------------     |

                |  <-------------响应---------  |   <---------   传输数据  ---------------     |

                |  <------------响应----------- |   <---------   传输数据  ---------------     |

通信方式如上图所示,因此,采用函数指针在客户端进行回调,可实现被动传输数据的过程。

    在客户端的应用中,socket的client的基类DLL保存好,定义的函数指针,并具有回调函数注册功能。在该DLL中采用一个线程,使其能更好的获取设备的数据等。在获取到数据后,按照不同的数据类型采用不同的回调函数传输,回调函数在客户端的应用中实现,即实现socket的客户端接收到服务其的数据就自动调用回调函数,在客户端中,直接根据不同的数据进行处理,不需要采用轮询获取的方式。

    因该问题比较常见实用,因此,作为一个笔记记录下来,文中如有错误,请读者指正。


© 著作权归作者所有

zjb1025
粉丝 3
博文 1
码字总数 529
作品 0
深圳
程序员
私信 提问
FPGA设计——全局曝光CMOS图像采集与USB2.0显示

1. 概述 本设计采用FPGA技术,将CMOS摄像头(LVDS接口)的视频数据经过采集、存储、帧率转换及格式转换,最终通过USB2.0接口显示在电脑屏幕上。 2. 硬件系统框图 CMOS采用一款全局曝光芯片,F...

shugenyin
2017/02/15
0
0
tinyXml处理UTF-8编码详解——写入和读取

tinyXml的特点是不对xml节点内容的具体编码处理,这一切都交给用户。因此tinyXml和字符有关的函数都是只接受char*的数据类型。 例如: TiXmlElement *pRoot=new TiXmlElement("test"); pRoo...

moki_oschina
2015/12/28
280
0
VC++与Matlab混合编程之引擎操作详解

Visual C++是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快。但在科学计算方面函数库显得不够丰富、读取、显示数据图形不方便。Matlab是一款将数值分析、矩阵计算、信...

flyhighly
2010/12/21
388
0
MTK模拟器调试指南

前篇文章介绍了手机调试的TRACE技巧,MTK手机调试是比较简单的,除了打TRACE,找ASSERT,分析DUMP外,剩下的就是经验了,有经验的人看到现象就能猜到问题出在什么地方,简单看一下TRACE只是为了确认...

blogercn
2009/11/25
774
0
c++继承中的内存布局

今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。 ——谈VC++对象模型 (美)简.格雷 程化 译 译者前言...

长平狐
2012/10/08
5.7K
1

没有更多内容

加载失败,请刷新页面

加载更多

spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
10分钟前
1
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部