`
unsoundboy
  • 浏览: 60850 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Linux网络编程--8. 套接字选项

阅读更多
Linux网络编程--8. 套接字选项
http://linuxc.51.net 作者:hoyt (2001-05-08 11:23:24)


有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了. 


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 查看. 
分享到:
评论

相关推荐

    LinuxSocket网络编程系列文档合集

    教程名称:Linux Socket网络编程系列文档合集课程目录:【】Linux 网络编程入门教程 clown【】... 套接字选项【】Linux网络编程--9. 服务器模型【】网络 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    Linux网络编程.pdf

    很好的一本书,非常通俗易懂 Linux网络编程.pdf 第1章 Linux网络编程概述 第2章 TCP/IP协议 ...第8章 套接字选项 第9章 进程间通信 第10章 带外数据 第11章 原始套接字 第12章 输入/输出模型 第13章 服务器模型

    Linux网络编程

    6.4.3 一个套接字是怎样在网络上传输数据的?......... 143 6.5 套接字的一些基本知识... 144 6.5.1 基本结构............ 144 6.5.2 基本转换函数..... 145 6.6 基本套接字调用........... 147 6.6.1 socket() 函数...

    linux网络编程-宋敬彬-part1

    8.3 套接字描述符判定函数issockettype() 223 8.3.1 进行文件描述符判定的函数issockettype() 224 8.3.2 main()函数 224 8.4 IP地址与域名之间的相互转换 225 8.4.1 DNS原理 225 8.4.2 获取主机信息的函数...

    linux 网络编程源代码

    1.4.2 UNIX 的诞生..........................................................................................8 1.4.3 1979 – UNIX 第七版 ....................................................................

    Linux网络编程电子书.rar

    第一章 linux网络编程概述 ...第八章 套接字选项 第九章 进程间的通信 第十章 带外数据 第十一章 原始套接字 第十二章 输入输出模型 第十三章 服务器模型 第十四章 服务器/客户端程序源码(qq模拟和网上选课系统)

    linux网路编程 中文 23M 版

    第2 章Linux编程环境....................................................................................................14 2.1 Linux环境下的编辑器................................................. 14 ...

    Linux网络编程 part2

    内容包含linux系统概述、linux编程环境、linux文件系统简介、linux下的进程和线程、tcp/ip协议族、应用层网络服务程序、tcp编程、主机信息获取、数据io复用、udp编程、高级套接字、套接字选项、原始套接字、服务器...

    Linux网络编程.pdf socket tcp udp

    1.1 网络的历史................................................................. ...................................... 1 1.2 OSI 模型....................................................................

    Linux网络编程代码

    Linux网络编程包含了文本资料和代码,文档十分全面,对新手非常合适,代码很详细

    Linux网络编程 part3

    内容包含linux系统概述、linux编程环境、linux文件系统简介、linux下的进程和线程、tcp/ip协议族、应用层网络服务程序、tcp编程、主机信息获取、数据io复用、udp编程、高级套接字、套接字选项、原始套接字、服务器...

    linux网络编程

    内容包含Linux系统概述、Linux编程环境、Linux文件系统简介、Linux下的进程和线程、TCP/IP协议族、应用层网络服务程序、TCP编程、主机信息获取、数据IO复用、UDP编程、高级套接字、套接字选项、原始套接字、服务器...

    linux网络编程示例

    Internet domain server启动命令:./server 端口号 Internet domain client启动命令:./client 服务器IP地址 端口号 Unix domain server启动命令:./U_server 不存在的文件路径 Unix domain client启动命令:./U_...

    Linux 网络编程

    内容包含Linux系统概述、Linux编程环境、Linux文件系统简介、Linux下的进程和线程、TCP/IP协议族、应用层网络服务程序、TCP编程、主机信息获取、数据IO复用、UDP编程、高级套接字、套接字选项、原始套接字、服务器...

Global site tag (gtag.js) - Google Analytics