IPPROTO_IP

1.IP_HDRINCL,布尔型,仅适用于原始套接字(SOCK_RAW)

如果应用程序希望接收IP层及IP层以上的所有数据或者自行组装包含IP层在内的报文,那么可以设置该选项为TRUE。

2.IP_ADD_MEMBERSHIP,struct ip_mreq结构,用于加入多播组

该选项用于将指定网络接口上的套接字加入IP多播组,此套接字必须是AF_INET地址族并且类型为SOCK_DGRAM。

  1. struct ip_mreg{ 
  2.   struct in_addr imr_multiaddr;/*IP multicast address of group*/ 
  3.   struct in_addr imr_interface;/*local IP address of interface*/ 
  4. }; 

其中imr_multiaddr对应于打算加入的多播组IPv4地址;而imr_interface是本地接口的IP地址,也可以设置为INADDR_ANY,表明选择的是默认接口。

3.IP_DROP_MEMBERSHIP,struct ip_mreq结构,由于退出多播组,该选项的使用与IP_ADD_MEMBERSHIP类似。

4.IP_MULTICAST_IF,BOTH,DWORD类型,设置/读取多播的本地接口。

IP_MULTICAST_IF选项用于设置或读取本地接口,在设置了本地的多播外出接口后,本地机器以后发出的任何多播数据都会经由它传送出去,该选项多用于多穴主机。

5.IP_MULTICAST_LOOP,BOTH,布尔类型,用于启用或禁止多播报文回环。

在默认情况下,当发送IP多播数据时,如果发生套接字本身也属于该多播组,那么数据会原封不动的返回一份至套接字---回环(loopback)。若将该选项设为FALSE,发出的任何数据对都不会投递至套接字的进入数据队列中。

6.IP_MULTICAST_TTL,BOTH,DWORD类型,设置/读取套接字上IP多播的TTL值。

在默认情况下,多播数据报采用的TTL值为1,IP_MULTICAST_TTL选项可用于读取或设置该值。多播TTL值的大小影响到多播数据的传播范围。只有在有效范围内的组成员才会收到数据。