学习(编程技巧_编程知识_程序代码),是学习编程不可多得的学习精验

源代码在线查看: linux网络编程--8. 套接字选项.txt

软件大小: 726 K
上传用户: csytml
关键词: 编程 编程技巧 程序 代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				Linux网络编程--8. 套接字选项
				 
				
				--------------------------------------------------------------------------------
				 
				第八军团 时间:2004-1-17 21:52:00 
				   
				
				
				有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了.  
				
				
				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                  服务类型 
				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 查看. 
				 
				 
							

相关资源