Leve(级别) |
optname(选项名) |
get |
Set |
说明 |
标志 |
数据类型 |
SOL_SOCKET |
SO_BROADCAST |
· |
· |
允许发送广播数据报 |
· |
int |
SO_DEBUG |
· |
· |
开启调试跟踪 |
· |
int |
|
SO_DONTROUTE |
· |
· |
绕过外出路由表查询 |
· |
int |
|
SO_ERROR |
· |
获取待处理错误并清除 |
int |
|||
SO_KEEPALIVE |
· |
· |
周期性测试连接是否仍存活 |
· |
int |
|
SO_LINGER |
· |
· |
若有数据待发送则延迟关闭 |
linger |
||
SO_OOBINLINE |
· |
· |
让接收到的带外数据继续在线留存 |
· |
int |
|
SO_RCVBUF |
· |
· |
接收缓冲区大小 |
int |
||
SO_SNDBUF |
· |
· |
发送缓冲区大小 |
int |
||
SO_RCVLOWAT |
· |
· |
接收缓冲区低水位标记 |
int |
||
SO_SNDLOWAT |
· |
· |
发送缓冲区低水位标记 |
int |
||
SO_RCVTIMEO |
· |
· |
接收超时 |
timeval{} |
||
SO_SNDTIMEO |
· |
· |
发送超时 |
timeval{} |
||
SO_REUSEADDR |
· |
· |
允许重用本地地址 |
· |
int |
|
SO_REUSEPORT |
· |
· |
允许重用本地端口 |
· |
int |
|
SO_TYPE |
· |
取得套接字类型 |
int |
|||
SO_USELOOPBACK |
· |
· |
路由套接字取得所发送数据的副本 |
· |
int |
|
IPPROTO_IP |
IP_HDRINCL |
· |
· |
随数据包含的IP首部 |
· |
int |
IP_OPTIONS |
· |
· |
IP首部选项 |
int |
||
IP_RECVDSTADDR |
· |
· |
返回目的IP地址 |
· |
int |
|
IP_RECVIF |
· |
· |
返回接收接口索引 |
· |
int |
|
IP_TOS |
· |
· |
服务类型和优先权 |
int |
||
IP_TTL |
· |
· |
存活时间 |
int |
||
IP_MULTICAST_IF |
· |
· |
指定外出接口 |
in_addr{} |
||
IP_MULTICAST_TTL |
· |
· |
指定外出TTL |
u-char |
||
IP_MULTICAST_LOOP |
· |
· |
指定是否环回 |
u_char |
||
IP_ADD_MEMBERSHIP |
· |
加入多播组 |
ip_mreq{} |
|||
IP_DROP_MEMBERSHIP |
· |
离开多播组 |
ip_mreq{} |
|||
IP_BLOCK_SOURCE |
· |
阻塞多组播 |
ip_mresource{} |
|||
IP_UNBLOCK_SOURCE |
· |
开通多组播 |
ip_mresource{} |
|||
IP_ADD_SOURCE_MEMBERSHIP |
· |
加入源特定多组播 |
ip_mresource{} |
|||
IP_DROP_SOURCE_MEMBERSHIP |
· |
离开源特定多组播 |
ip_mresource{} |
|||
IPPROTO_ICMPV6 |
ICMP6_FILTIER |
· |
· |
指定待传递的ICMPv6 |
icmp6_filter{} |
|
IPPROTO_IPV6 |
IPV6_CHECKSUM |
· |
· |
用于原始套接字的校验和字段偏移 |
int |
|
IPV6_DONTFRAG |
· |
· |
丢弃大的分组而将其分片 |
· |
int |
|
IPV6_NEXTHOP |
· |
· |
指定下一跳地址 |
sockaddr_int6{} |
||
IPV6_PATHMTU |
· |
获取当前路径MTU |
ip6_mtuinfo{}_ |
|||
IPV6_RECVDSTOPTS |
· |
· |
接收目的地选项 |
· |
int |
|
IPV6_RECVHOPLIMIT |
· |
· |
接收单播跳限 |
· |
int |
|
IPV6_RECVHOPOPTS |
· |
· |
接收步跳选项 |
· |
int |
|
IPV6_RECVPATHMTU |
· |
· |
接收路径MTU |
· |
int |
|
IPV6_RECVPKTINFO |
· |
· |
接收分组信息 |
· |
int |
|
IPV6_CVRTHDR |
· |
· |
接收源路径 |
· |
int |
|
IPV6_RECVTCLASS |
· |
· |
接收流通类型 |
· |
int |
|
IPV6_UNICAST_HOPS |
· |
· |
默认单播跳限 |
int |
||
IPV6_USE_MIN_MTU |
· |
· |
使用最小MTU |
· |
int |
|
IPV6_V6ONLY |
· |
· |
禁止v4兼容 |
· |
int |
|
IPV6_XXX |
· |
· |
粘附性辅助数据 |
int |
||
IPV6_ULTICAST_IF |
· |
· |
指定外出接口 |
u_int |
||
IPV6_MULTICAST_HOPS |
· |
· |
指定外出跳限 |
int |
||
IPV6_MULTICAST_LOOP |
· |
· |
指定是否环回 |
· |
u_nt |
|
IPV6_JOIN_GROUP |
· |
加入多组播 |
ip6_mreq{} |
|||
IPV6_LEAVE_GROUP |
· |
离开多组播 |
ip6_mreq{} |
|||
IPPROTO_IP 或PROTO_IPV6 |
MCAST_JOIN_IF |
· |
加入多组播 |
group_req{} |
||
MCAST_LEAVE_GROUP |
· |
离开多组播 |
group_source_req{} |
|||
MCAST_BLOCK_SOURCE |
· |
阻塞多播源 |
group_source_req{} |
|||
MCAST_UNBLOCK_SOURCE |
· |
开通多播源 |
group_source_req{} |
|||
MCAST_JOIN_SOURCE_GROUP |
· |
加入源特定多播组 |
group_source_req{} |
|||
MCAST_LEAVE_SOURCE_GROUP |
· |
离开源特定多播组 |
group_source_req{} |
|||
IPPROTO_TCP |
TCP_MAXSEG |
· |
· |
TCP最大分节大小 |
int |
|
TCP_NODELAY |
· |
· |
禁止Nagle算法 |
· |
int |
|
IPPROTO_SCTP |
SCTP_ADAPTION_LAYER |
· |
· |
适配层指示 |
sctp_setadaption{} |
|
SCTP_ASSOCINFO |
· |
检查并设置关联信息 |
sctp_assocparams{} |
|||
SCTP_AUTOCLOSE |
· |
· |
自动关闭操作 |
int |
||
SCTP_DEFAULT_SEND_PARAM |
· |
· |
默认发送参数 |
sctp_sndrcvinfo{} |
||
SCTP_DISABLE_FRAGMENTS |
· |
· |
SCTP分片 |
· |
int |
|
SCTP_EVENTS |
· |
· |
感兴趣事件的通知 |
sctp_event_subscribe{} |
||
SCTP_GET_PEER_ADDR_INFO |
获取对端地址状态 |
sctp_paddrinfo |
||||
SCTP_I_WANT_MAPPED_V4_ADDR |
· |
· |
映射的v4地址 |
· |
int |
|
SCTP_INITMSG |
· |
· |
默认的INIT参数 |
sctp_initmsg{} |
||
SCTP_MAXBURST |
· |
· |
最大猝发大小 |
int |
||
SCTP_MAXSEG |
· |
· |
最大分片大小 |
int |
||
SCTP_NODELAY |
· |
· |
禁止Nagle算法 |
· |
int |
|
SCTO_PEER_ADDR_PARAMS |
· |
对端地址参数 |
sctp_paddrparams{} |
|||
SCTP_PRIMARY_ADDR |
· |
主目的地址 |
sctp_setprim{} |
|||
SCTP_PTOINFO |
· |
RTO信息 |
sctp_rtoinfo{} |
|||
SCTP_SET_PEER_PRIMARY_ADDR |
· |
对端的主目的地址 |
sctp_setpeerprim{} |
|||
SCTP_STATUS |
获取关联状态 |
sctp_status{} |
||||
#include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <string.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <stdio.h> int main(int argv,char **argc) { //1.创建socket int sockfd=socket(AF_INET,SOCK_DGRAM,0); if(sockfd<0) { perror("create sock fail\n"); } //设置接收端的信息 struct sockaddr_in addr; bzero(&addr,sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(atoi(argc[1])); //接收端的端口号 addr.sin_addr.s_addr = inet_addr("192.168.7.255"); //发送广播数据到7段的IP里面 int ret=0; //设置广播属性 int on=1; //使能标记位 1 开启 0关闭 ret = setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on)); if(ret<0) { perror("setsocketopt fail"); } else { printf("set sock ok\n"); } char buf[50]={"aaaaaaaa date"}; int ret1 = 0; //发送UDP数据包 while(1) { ret1=sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)&addr,sizeof(addr)); if(ret1>0) { printf("buf=%s\tsize=%d\n",buf,ret1); } sleep(1); } close(sockfd); }