setsockopt 解析

 

int setsockopt (
SOCKET s,
int level,
int optname,
const char FAR * optval,
int optlen
);

 

level指定控制套接字的层次.可以取三种值:
1)SOL_SOCKET:通用套接字选项.
2)IPPROTO_IP:IP选项.
3)IPPROTO_TCP:TCP选项. 
optname指定控制的方式(选项的名称),我们下面详细解释 

optval获得或者是设置套接字选项.根据选项名称的数据类型进行转换 

选项名称        说明                  数据类型
========================================================================
SOL_SOCKET
------------------------------------------------------------------------
SO_BROADCAST      允许发送广播数据            int
SO_DEBUG        允许调试                int
SO_DONTROUTE      不查找路由               int
SO_ERROR        获得套接字错误             int
SO_KEEPALIVE      保持连接                int
SO_LINGER       延迟关闭连接              struct linger
SO_OOBINLINE      带外数据放入正常数据流         int
SO_RCVBUF       接收缓冲区大小             int
SO_SNDBUF       发送缓冲区大小             int
SO_RCVLOWAT      接收缓冲区下限             int
SO_SNDLOWAT      发送缓冲区下限             int
SO_RCVTIMEO      接收超时                struct timeval
SO_SNDTIMEO      发送超时                struct timeval
SO_REUSERADDR     允许重用本地地址和端口         int
SO_TYPE        获得套接字类型             int
SO_BSDCOMPAT      与BSD系统兼容              int
==========================================================================
IPPROTO_IP
--------------------------------------------------------------------------
IP_HDRINCL       在数据包中包含IP首部          int
IP_OPTINOS       IP首部选项               int
IP_TOS         服务类型
IP_TTL         生存时间                int
==========================================================================
IPPRO_TCP
--------------------------------------------------------------------------
TCP_MAXSEG       TCP最大数据段的大小           int
TCP_NODELAY       不使用Nagle算法             int
=========================================================================

关于这些选项的详细情况请查看 Linux Programmer"s Manual 

8.2 ioctl 
ioctl可以控制所有的文件描述符的情况,这里介绍一下控制套接字的选项. 

int ioctl(int fd,int req,...)

==========================================================================
ioctl的控制选项
--------------------------------------------------------------------------
SIOCATMARK       是否到达带外标记            int
FIOASYNC        异步输入/输出标志            int
FIONREAD        缓冲区可读的字节数           int
==========================================================================

详细的选项请用 man ioctl_list 查看. 

 

 



文章来自: 本站原创
Tags:
评论: 0 | 查看次数: 7868