远程函数调用
ZC: 模仿函数的调用,本来函数调用就是 同步的,Call一个函数 直到它 返回 界面都应该是卡住的。
ZC: 如果要将 模仿函数调用的方式 做成异步的,可以想象AdoQuery 使用回调函数,或者在Windows下使用消息(Linux不知道有没有窗口异步通知方式...)
推荐项目名:RemoteFuncCall、ProcessCommunicate
一共分两层:
(函数)处理层
(信息)通信层
1、处理层
卡住(有时间限制) 直到函数返回
2、通信层
通信方式:消息 / TCPIP
参数 & 函数返回 的 封装&解析
2.1、参数类型 一共分2类:数据 & 缓冲区
数据 + 数据长度(32位/64位) --> 注意:只需要指针数值 不需要指针指向的数据的参数 也当做 数据 来处理
缓冲区指针 + 缓冲区长度
2.2、void 参数填写(int 长度, 类型 类型参数)
void 返回值提取(int 长度, 类型 类型参数)
3、泛型 参数类型的判断 (能否做到?貌似搜索到的都是 C#/java的文章...)
类似下面的 static_cast / dynamic_cast 貌似也不合适:
Base* pb1 = new Derived(); Derived *pd1 = static_cast<Derived *>(pb1); Derived *pd2 = dynamic_cast<Derived *>(pb1); //编译错误:
4、调用
4.1、调用远程进程的函数--> 同步的卡住就行
4.2、被远程进程调用函数 --> 通信器 接收到消息之后 需要 让主线程(界面线程)来执行函数。
Windows下使用消息机制来完成这个任务,Linux下怎么弄?(参考Qt在Linux下的界面处理 来学习Linux下的处理机制)
4.3、
4.4、
5、