我行依我素 | 苦苦咸咸就是我 | Snailium的个人网站
8.1 getsockopt和setsockopt
int getsockopt(int sockfd, int level, int optname,
void *optval, socklen_t *optlen)
int setsockopt(int sockfd, int level, int optname,
const void *optval, socklen_t *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 服务类型 int
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 查看。
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
添加评论