标签:
IPC分为本地IPC(同一计算机上的不同进程)和远程IPC(网络互联的不同计算机),本地IPC的机制有共享内存(shared memory)、管道(pipe)、信号(signal)等,远程IPC的机制有Socket、X25电路、WIN32命名管道(named pipe)。
应用程序可以用Socket API中的C函数创建、管理本地通信端点(endpoint),即socket套接字。一个socket可以通过一个handle访问。在windows中,socket句柄和其他I\O句柄不能互换。
Socket API包含20多个系统函数,这些函数分为以下5类:
从服务类型(stream流、datagram数据报)、连接角色(active connection establishment主动连接端,常作为client;passive connection establishment被动连接端,常作为server)、通信领域(local or remote)几个方面,对socket api进行分组,得到socket空间分布图:
原始Socket API有以下几个局限性:容易出错、复杂、不可移植。C++ Network Program v1的2.3.1节指出socket api的数个问题。比如,sockaddr_in变量必须手动初始化,必须用htons将“主机字节顺序转换为网络字节顺序”,服务端必须按照顺序写入bind、linsten、accept,缺乏命名规范等。
ACE定义了一组C++类,用来解决第一节提到的Socket API局限性,ACE Socket Wrapper Facade提供的ACE类有:
这些ACE类的UML关系图如下:
按照1.2节分类维度,将这些ACE类组合分层成如下空间图。
参考书:C++ Network Program v1,Mastering complexity with ACE and Patterns。
标签:
原文地址:http://www.cnblogs.com/hgwang/p/5883899.html