对于大多数程序员而言,进程间通信(IPC)与使用Socket API是同义词。 套接字API最初是为UNIX®平台开发的,旨在在TCP / IP协议之上提供应用程序级别的接口。 它支持多种功能,其中一些功能如表1所示。
表1.构成Socket API一部分的旧式C例程
| C函数名称 | 提供的功能 |
|---|---|
socket |
分配新的套接字句柄 |
bind |
将套接字句柄与本地或远程地址相关联 |
listen |
被动侦听传入的客户端连接请求的例程 |
connect |
客户端计算机使用connect例程开始TCP握手; 服务器使用accept例程来接受连接请求 |
send |
例行数据传输 |
recv |
例行接收数据 |
使用本机Socket API存在几个问题。 首先,尽管API的遗留C函数几乎无处不在,但它们却不可移植。 例如,Windows®中的socket方法返回类型为SOCKET的句柄,而在UNIX中,相同的函数返回整数。 有些方法(如closesocket仅存在于Windows中,更不用说不兼容的标头了。 此外,本机API的许多错误仅在运行时出现,例如,地址或协议不匹配或未初始化的数据成员。
自适应通信环境(ACE)框架定义了解决这些问题的一组包装外观。 本文剖析了ACE在相同或不同主机之间为IPC提供的一些基于C++的,面向对象的类。
用于网络编程的ACE类
表2显示了ACE为TCP / IP连接定义的一些基本类。
表2. ACE中用于网络编程的类
| ACE班 | 提供的功能 |
|---|---|
ACE_Addr |
ACE中的基类; 用于网络寻址 |
ACE_INET_Addr |
源自ACE_Addr ; 用于Internet域名寻址 |
ACE_SOCK |
ACE套接字包装外观层次结构的基类: ACE_SOCK_Acceptor , ACE_SOCK_Connector等 |
ACE_SOCK_Acceptor |
用于建立被动连接; 从概念上讲类似于Berkeley Software Distribution(BSD)的accept()和listen()例程 |
ACE_SOCK_Connector |
在流对象和远程主机之间建立连接; 在概念上类似于BSD connect()例程 |
ACE_SOCK_Stream |
用于处理面向TCP连接的数据传输的类 |
对于用户数据报

本文介绍了ACE(Adaptive Communication Environment)框架在TCP/IP和UDP网络编程中的应用,包括客户端和服务器端的连接建立,错误处理,以及广播和多播通信。通过ACE提供的面向对象的类,可以简化跨平台的进程间通信实现。
最低0.47元/天 解锁文章
1568

被折叠的 条评论
为什么被折叠?



