标签:sockets
###########################################################
套接字选项相关的系统调用:
###########################################################
将optval指向的单元中的值设置给optname选项:
int setsockopt(int sockfd, int level, int optname, const void *optval,socklen_t optlen);
获取optname选项当前值,放入optval指向的单元中:
int getsockopt(int sockfd, int level, int optname, void *optval,socklen_t *optlen);
注意最后一个参数是指针。
sockfd:指向一个已经打开的套接字描述符
optlen:指定optval的大小
optval:存放要获取或设置的值,类型参考表格
另外三个参数level、optname参考相应的表格。
套接字选项相关的sctp库函数:
int sctp_opt_info(int sockfd,
sctp_assoc_t assoc_id, //可能存在的关联标识
int opt, //套接字选项
void *arg, //套接字选项参数
socklen_t *siz//参数大小
);
获取SCTP套接字选项的函数(类似于getsockopt)
套接字选项分类:
标志选项:启用或禁止某个特性的二元选项;此时*optval为int或u_int, *optval=0表示禁用,其它表示启用。
值选项:选项的特定值。
对于套接字选项,针对套接字的状态,什么时候设置或获取要考虑时序问题。
------------------------
套接字(数据链路层):也就是所谓的通用套接字选项,与协议无关。
level:SOL_SOCKET
optname:
SO_BROADCAST:开启或禁止进程发送广播消息的能力(只有UDP支持)。
SO_DEBUG:(只有TCP支持)。
SO_DONTROUTE:规定外出的分组将绕过底层协议的正常路由机制。
SO_ERROR:返回错误
SO_KEEPALIVE:保持存活
SO_LINGER:指定close函数对面向连接的协议(tcp\sctp)如果操作。
SO_OOBINLINE:当开启该选项时,带外数据将被留在正常的输入队列中。
SO_RCVBUF:修改套接字接收缓冲区的大小
SO_SNDBUF:修改套接字发送缓冲区的大小
SO_RCVLOWAT:
SO_SNDLOWAT:
SO_RCVTIMEO:设置接收超时时间
SO_SNDTIMEO:设置发送超时时间
SO_REUSEADDR:防止地址重复使用,也就是只能有一个连接。
SO_REUSEPORT:防止端口重复使用,也就是只能有一个连接。
SO_TYPE:
SO_USELOOPBACK:
------------------------
IPv4(网络层):
level:IPPROTO_IP
optname:
IP_HDRINCL:
IP_OPTIONS:
IP_RECVDSTADDR:
IP_RECVIF:
IP_TOS:
IP_TTL:
------------------------
IPv6(网络层)):
level:IPPROTO_IPV6
optname:
IPV6_CHECKSUM:
IPV6_DONTFRAG:
IPV6_NEXTHOP:
IPV6_PATHMTU:
IPV6_RECVDSTOPTS:
IPV6_RECVHOPLIMIT:
IPV6_RECVHOPOPTS:
IPV6_RECVPATHMTY:
IPV6_RECVPKTINFO:
IPV6_RECVRTHRD:
IPV6_RECVTCLASS:
IPV6_UNICAST_HOPS:
IPV6_USE_MIN_MTU:
IPV6_V6ONLY:
IPV6_XXX:
-----------
ICMPv6(网络层):
level:IPPROTO_ICMPV6
optname:
ICMP6_FILTER:
------------------------
TCP(传输层):
level:IPPROTO_TCP
optname:
TCP_MAXSEG:
TCP_NODELAY:
------------------------
SCTP(传输层):
level:IPPROTO_SCTP
optname:
SCTP_ADAPTION_LAYER:
SCTP_ASSOCINFO:
SCTP_AUTOCLOSE:
SCTP_DEFAULT_SEND_PARAM:
SCTP_DISABLE_FRAGMENTS:
SCTP_EVENTS:预订八个事件
SCTP_GET_PEER_ADDR_INFO:
SCTP_I_WANT_MAPPED_V4_ADDR:
SCTP_INITMSG:初始化一些信息
SCTP_MAXBURST:
SCTP_MAXSEG:
SCTP_NODELAY:
SCTP_PEER_ADDR_PARAMS:
SCTP_PRIMARY_ADDR:
SCTP_RTOINFO:
SCTP_SET_PEER_PRIMARY_ADDR:
SCTP_STATUS:
套接字的一些结构:
struct sctp_initmsg
{
__u16 sinit_num_ostreams;
__u16 sinit_max_instreams;
__u16 sinit_max_attempts;
__u16 sinit_max_init_timeo;
};
标签:sockets
原文地址:http://blog.csdn.net/wowotouweizi/article/details/43989013