【发布时间】:2016-08-04 10:18:20
【问题描述】:
我有一个非常笼统的问题。我正在尝试在 OSI 的两层的两个模块之间进行通信(假设传输层在 A 类中实现,B 类实现网络层)。我的理解是,A 类可以简单地使用 B 类,通过调用其方法将数据有效负载进一步转发到较低层。因此,A 类具有 B 类的知识,反之则不然。
问题是,当B类从下层接收数据时,由于不知道A类,数据如何转发给A类(上层)。这样的功能在C++中是如何实现的?完成此类任务需要学习哪些重要主题?
【问题讨论】:
-
这是一个抽象的问题。 C++ 中没有任何这种性质的规则。在设计这样的应用程序时,完全由您来定义和实施所有规则。
-
对象 A 可以 poll 对象 B 获取数据。或者设置一个callback,B 在接收到数据后调用它。或者完全是别的东西。这个问题可以有很多个答案,而且范围很广。
-
我想这也很大程度上取决于您拥有的硬件。如果这是像微控制器或 DSP 这样的快速系统,您可能不得不牺牲 OOD 来提高速度。如果系统是一些慢的东西,比如 PC,那么你就拥有了世界上所有的时间。
标签: c++ oop network-programming osi