码迷,mamicode.com
首页 > 其他好文 > 详细

sockets: 套接字选项相关的系统调用

时间:2015-02-28 21:44:53      阅读:298      评论:0      收藏:0      [点我收藏+]

标签: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: 套接字选项相关的系统调用

标签:sockets

原文地址:http://blog.csdn.net/wowotouweizi/article/details/43989013

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!