套接字子例程
用途
创建用于通信的端点,并返回描述符。
库
标准 C 库 (libc.a)
语法
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
int socket ( AddressFamily, Type, Protocol)
int AddressFamily, Type, Protocol;
#include <sys/socket.h>
#include <sys/socketvar.h>
int socket ( AddressFamily, Type, Protocol)
int AddressFamily, Type, Protocol;
描述
socket 子例程在指定的 AddressFamily 和指定类型中创建套接字。 可以由系统指定或指定协议。 如果未指定协议 (值为 0) ,那么系统将从地址系列中可用于支持请求的套接字类型的那些协议中选择适当的协议。
套接字 子例程返回一个描述符 (整数) ,该描述符可用于稍后对套接字进行操作的子例程。
套接字级别选项控制套接字操作。 getsockopt 和 setsockopt 子例程用于获取和设置这些选项,这些选项在 /usr/include/sys/socket.h 文件中定义。
参数
| 项 | 描述 |
|---|---|
| AddressFamily | 指定一个地址系列,后面的套接字操作中指定的地址应使用该地址系列进行解释。 /usr/include/sys/socket.h 文件包含地址系列的定义。 常用的系列有:
|
| TYPE | 指定通信的语义。 /usr/include/sys/socket.h 文件定义套接字类型。 该操作系统支持下列类型:
|
| 协议 | 指定要与套接字配合使用的特定协议。 将 协议 参数 0 为 0 会导致 套接字 子例程缺省为所请求的返回套接字类型的典型协议。 对于 SCTP 套接字,协议参数为 IPPROTO_SCTP。 对于 RDS 套接字, Protocol 参数为 BYPASSPROTO_RDS。 |
返回值
成功完成后, 套接字 子例程将返回整数 (套接字描述符)。
如果 套接字 子例程不成功,那么该子例程处理程序将执行以下功能:
- 会向调用程序返回-1的值。
- 将错误代码 (指示特定错误) 移动到 错误号 全局变量中。 有关 错误号 变量的进一步说明,请参阅 错误通知对象类。
错误代码
如果发生以下任何错误,那么 套接字 子例程不成功:
| 错误 | 描述 |
|---|---|
| EAFNOSUPPORT | 指定的地址系列中的地址不能与此套接字一起使用。 |
| EMFILE | 每个进程描述符表都已已满。 |
| ENOBUFS | 系统中没有足够的可用资源来完成调用。 |
| esocktnosupport | 不支持指定地址系列中的套接字。 |
示例
以下程序片段说明了如何使用 套接字 子例程来创建数据报套接字以在机器上使用:
s = socket(AF_UNIX, SOCK_DGRAM,0);实现细节
套接字子例程是基本操作系统 (BOS) 运行时的一部分。
可以使用定义的 COMPAT_43 来编译套接字应用程序。 这将使 sockaddr 结构 BSD 4.3 兼容。 有关更多详细信息,请参阅 socket.h。