上一篇"跨平台(Windows+Linux)的Socket通讯程序"给出了Socket通讯底层的一些函数的包装方法/类,同时屏蔽了操作系统(Windows/Linux)的不同。
上一篇只是对通讯底层方法的封装,并没用涉及应用,这一篇将基于上一篇,并结合"跨平台(Windows+Linux)的线程辅助程序",讨论一个实用化的Socket通讯程序的体系结构。
一、结构图
下面给出了一个Socket通讯应用的大致体系结构图。
图中,给出了一些概念类和它们所处的层次,大致上,分为三个处理层次以及一个辅助层次。
- 底层封装函数:这个层次的内容在(一)中已论述,主要是对Socket原生函数的封装,之所以既有CSocketWrap类,又有独立的辅助函数,是考虑到一般性与特殊性兼顾,对通常的通讯逻辑,可在CSocketWrap类中处理,对特殊的要求,可直接调用底层的封装函数。
- 通用的Server和Client层:因为Server端与Client端通讯逻辑不同,宜采用两个类分别处理,本文没有将UDP与TCP协议分开,如果逻辑要更清晰一些,也可以写成4个类