📄 linux网络编程--8. 套接字选项.html
字号:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="GENERATOR" content="Microsoft FrontPage 3.0"><title>[ 永远的UNIX > Linux网络编程--8. 套接字选项 ]</title><style type="text/css"><!--body,th,input,select,textarea,select,checkbox{font:12pt 宋体}A:link { text-decoration:underline; color:#E6A306}A:visited { text-decoration:underline; color:#E6A306}A:hover { text-decoration:underline; color:#FFFF00}body { font-family: "宋体", "serif"; font-size: 12pt}td { font-family: "宋体", "serif"; font-size: 12pt}p { font-size: 9pt; line-height: 150%}--></style></head><body text="#ffffff" background="/images/bline.gif"><div align="center"><center><table border="0" width="70%" cellspacing="0" cellpadding="0" height="400"><tr> <td height="45"><p align="center"><img src="/images/title.gif" alt="[ 永远的UNIX::一个UNIX系统管理员的网上家园 ]"></td> </tr> <tr><tr> <td align=left height="40" valign=bottom align=left><small><a href="http://www.fanqiang.com">首页</a> > <a href=/a4/index.shtml>编程技术</a> > <a href=/a4/b7/index.html>网络编程</a> > 正文</small></td></tr><tr> <td width="100%" height="2" colspan="5" bgcolor="#D09F0D"><img src="/images/c.gif" width=1 height=1></td> </tr><tr> <td align=center height="40" valign=middle><font size=5><b>Linux网络编程--8. 套接字选项</b></font></td></tr><tr> <td align=center height="20"><font color=#999999><small>http://linuxc.51.net 作者:hoyt<hoytluo@21cn.com> (2001-05-08 11:23:24)</small></font></td></tr><td align=center><table border="0" width="80%" cellspacing="0" cellpadding="0" align=center><tr><td valign=top><font color=#cccccc>
<br>
<br>有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了.
<br>
<br>
<br>8.1 getsockopt和setsockopt
<br>
<br>int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)
<br>int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optlen)
<br>
<br>level指定控制套接字的层次.可以取三种值: 1)SOL_SOCKET:通用套接字选项. 2)IPPROTO_IP:IP选项. 3)IPPROTO_TCP:TCP选项.
<br>optname指定控制的方式(选项的名称),我们下面详细解释
<br>
<br>optval获得或者是设置套接字选项.根据选项名称的数据类型进行转换
<br>
<br>
<br>选项名称 说明 数据类型
<br>========================================================================
<br> SOL_SOCKET
<br>------------------------------------------------------------------------
<br>SO_BROADCAST 允许发送广播数据 int
<br>SO_DEBUG 允许调试 int
<br>SO_DONTROUTE 不查找路由 int
<br>SO_ERROR 获得套接字错误 int
<br>SO_KEEPALIVE 保持连接 int
<br>SO_LINGER 延迟关闭连接 struct linger
<br>SO_OOBINLINE 带外数据放入正常数据流 int
<br>SO_RCVBUF 接收缓冲区大小 int
<br>SO_SNDBUF 发送缓冲区大小 int
<br>SO_RCVLOWAT 接收缓冲区下限 int
<br>SO_SNDLOWAT 发送缓冲区下限 int
<br>SO_RCVTIMEO 接收超时 struct timeval
<br>SO_SNDTIMEO 发送超时 struct timeval
<br>SO_REUSERADDR 允许重用本地地址和端口 int
<br>SO_TYPE 获得套接字类型 int
<br>SO_BSDCOMPAT 与BSD系统兼容 int
<br>==========================================================================
<br> IPPROTO_IP
<br>--------------------------------------------------------------------------
<br>IP_HDRINCL 在数据包中包含IP首部 int
<br>IP_OPTINOS IP首部选项 int
<br>IP_TOS 服务类型
<br>IP_TTL 生存时间 int
<br>==========================================================================
<br> IPPRO_TCP
<br>--------------------------------------------------------------------------
<br>TCP_MAXSEG TCP最大数据段的大小 int
<br>TCP_NODELAY 不使用Nagle算法 int
<br>=========================================================================
<br>
<br>关于这些选项的详细情况请查看 Linux Programmer's Manual
<br>
<br>8.2 ioctl
<br>ioctl可以控制所有的文件描述符的情况,这里介绍一下控制套接字的选项.
<br>
<br> int ioctl(int fd,int req,...)
<br>
<br>==========================================================================
<br> ioctl的控制选项
<br>--------------------------------------------------------------------------
<br>SIOCATMARK 是否到达带外标记 int
<br>FIOASYNC 异步输入/输出标志 int
<br>FIONREAD 缓冲区可读的字节数 int
<br>==========================================================================
<br>
<br>详细的选项请用 man ioctl_list 查看.
<br></font></td></tr><tr><td><hr></td></tr><form method=post action=/cgi-bin/find.cgi><tr><td><b>相关文章</b> 关键词 <input type=text name=key value='Linux网络编程'> <input type=submit value=搜索></td></tr></form><tr><td><a href=/a4/b7/20010508/112240.html>Linux网络编程--7. TCP/IP协议</a> <small>(2001-05-08 11:22:40)</small></font><br><a href=/a4/b7/20010508/112209.html>Linux网络编程--6. 高级套接字函数</a> <small>(2001-05-08 11:22:09)</small></font><br><a href=/a4/b7/20010508/112131.html>Linux网络编程--5. 用户数据报发送</a> <small>(2001-05-08 11:21:31)</small></font><br><a href=/a4/b7/20010508/112052.html>Linux网络编程--4. 完整的读写函数</a> <small>(2001-05-08 11:20:52)</small></font><br><a href=/a4/b7/20010508/112014.html>Linux网络编程--3. 服务器和客户机的信息函数</a> <small>(2001-05-08 11:20:14)</small></font><br><a href=/a4/b7/20010508/111934.html>Linux网络编程--2. 初等网络函数介绍(TCP)</a> <small>(2001-05-08 11:19:34)</small></font><br><a href=/a4/b7/20010508/111655.html>Linux网络编程--1. Linux网络知识介绍</a> <small>(2001-05-08 11:16:55)</small></font><br></td></tr><tr><td> </td></tr></table></td></tr><tr> <td width="100%" height="2" colspan="5" bgcolor="#D09F0D"><img src="/images/c.gif" width=1 height=1></td> </tr><tr> <td width="100%" height="40" colspan="5" valign=top><p align="center"><font color=#ffffff>© 樊强制作 欢迎分享 2001 </font></p></td> </tr></table></center></div><img src="/cgi-bin/pagehit.cgi?filename=a4/b7/20010508/112324.html" width=1 height=1></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -