套接字类型定义对于用户可见的通信属性。Internet 系列套接字提供对 TCP/IP 传输协议的访问。对于可以通过 IPv6 和 IPv4 进行通信的套接字,由值 AF_INET6 标识 Internet 系列。 此外,还支持值 AF_INET,目的是为了与旧应用程序的源代码兼容并提供对 IPv4 的原始访问。
SunOS 环境支持四种套接字类型:
流套接字。使用该套接字,进程可以使用 TCP 进行通信。流套接字提供没有记录边界的双向、可靠、有序且不重复的数据流。建立连接之后,可以将数据作为字节流从这些套接字中读取或向其中写入。套接字类型为 SOCK_STREAM
。
数据报套接字。使用该套接字,进程可以使用 UDP 进行通信。数据报套接字支持双向消息流。数据报套接字上的进程接收消息的顺序可能不同于发送消息的顺序。数据报套接字上的进程可能会接收重复消息。通过数据报套接字发送的消息可能会被丢弃。但数据中的记录边界会被保留。套接字类型为 SOCK_DGRAM
。
原始套接字。该套接字提供对 ICMP 的访问。原始套接字还提供对网络栈不直接支持的其他基于 IP 的协议的访问。虽然这些套接字的确切特征取决于协议提供的接口,但是它们通常是面向数据报的套接字。原始套接字并不适用于大多数应用程序。提供原始套接字是为了支持开发新的通信协议,或者为了访问现有协议的更加深奥的功能。只有超级用户进程才能使用原始套接字。套接字类型为 SOCK_RAW
。
SEQ 套接字。该套接字支持 1–N 个流控制传输协议 (Stream Control Transfer Protocol, SCTP) 连接。有关 SCTP 的更多详细信息将在流控制传输协议中介绍。
有关详细信息,请参见选择特定的协议。