编程接口指南

选择特定的协议

如果 socket(3SOCKET) 调用的第三个参数为 0,则 socket(3SOCKET) 会选择缺省协议以用于所请求类型的返回套接字。缺省协议通常是正确的,而备用选项通常不可用。使用原始套接字与较低级别协议或较低级别硬件接口进行直接通信时,请使用协议参数设置解复用 (de-multiplexing)。

使用 Internet 系列中的原始套接字在 IP 上实现新协议,可以确保套接字只接收指定协议的包。要获取特定协议,请确定协议族中定义的协议号。对于 Internet 系列,使用标准例程中介绍的库例程之一,如 getprotobyname(3SOCKET)

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <netdb.h>

 ...

pp = getprotobyname("newtcp");

s = socket(AF_INET6, SOCK_STREAM, pp->p_proto);

借助基于流的连接,使用 getprotobyname 会形成套接字 s,但是协议类型为 newtcp,而不是缺省的 tcp