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);
}