网络编程-常用的套接字选项
2014-08-15 17:23
148 查看
注明:本文为学习经验的总结,部分内容引用自Unix网络编程卷一,有错误或者交流意见请发邮件至yb.zhaoyubo@gmail.com.非常感谢
网络编程中,常用套接字选项完成对网络和套接字行为的控制。
套接字选项分为SOL_SOCKET级别,IP级别,TCP/SCTP级别3个大类。常用getsockopt,setsockopt函数来设置,但对于特殊的SCTP选项,要使用stcp_opt_info(需要传递值-结果类型参数)。fcntl,ioctl函数也可以影响套接字选项,fcntl主要设置套接字的非阻塞态。
SO_ERROR 获取套接字上的错误。
SO_KEEPALIVE 保持存活。默认在两小时内没有数据交换,TCP会自动发给对端一个保持存活的探测分节。
SO_LINGER 设置close的行为。(默认立即返回)
SO_OOBINLINE 开启后,带外数据将被流在正常的输入队列。这种情况下接收函数MSG_OOB不能用来读带外数据。
SO_ RECVBUF SO_SNDBUF 内核的接收,发送缓冲区。UDP可能会造成缓冲区的溢出。
SO_RECLOWAT SO_SNDLOWAT 接收低水位标记,发送低水位标记。适用于select操作,当缓冲区的字节数大于所设的标记,select函数才返回。默认情况下为1字节。
SO_RCVTIMEO SO_SNDTIMEO 设置套接字接收和发送的一个超时值。
SO_REUSEADDR 1.此选项允许一个监听服务器捆绑其终所周知的端口,即使以前建立的将该端口用作他们本地端口的链接的仍然存在。它允许我们在多进程服务器中,父进程崩溃,子进程仍在为客户服务的时候,可以重新启动服务器。2.允许在同一个端口上启动同一个服务器的多个实例。3.允许单个进程捆绑同一端口到多个套机字。常用于udp类型套接字获取客户请求的目的地址。4.允许完全重复的捆绑。此种情况常用于多播和广播的情况。
SO_REUSEPORT
SO_TYPE 本选项返回了套接字地址的类型,通常由启动时继承了套接字的进程使用。
SO_USELOOPBACK 本选项仅用于AF_ROUTE 的套接字,默认为开启,相应的套接字将接收在其上发送的任何一个数据报的副本。
这里我们再介绍一个TCP选项。TCP_NODELAY:
默认情况Nagle(如果某个链接上有待确认数据,那么在数据确认之前,不会有发送相应小分组的行为)下是开启的,目的在于减少广域网的小分组数量,但是牺牲的延迟的指标。当需要每次产生一个小分组的回应的时候,应该开启此选项,禁止Nagle算法
网络编程中,常用套接字选项完成对网络和套接字行为的控制。
套接字选项分为SOL_SOCKET级别,IP级别,TCP/SCTP级别3个大类。常用getsockopt,setsockopt函数来设置,但对于特殊的SCTP选项,要使用stcp_opt_info(需要传递值-结果类型参数)。fcntl,ioctl函数也可以影响套接字选项,fcntl主要设置套接字的非阻塞态。
1 SOL_SOCKET
SO_BROADCAST 主要开启广播消息的能力。SO_ERROR 获取套接字上的错误。
SO_KEEPALIVE 保持存活。默认在两小时内没有数据交换,TCP会自动发给对端一个保持存活的探测分节。
SO_LINGER 设置close的行为。(默认立即返回)
SO_OOBINLINE 开启后,带外数据将被流在正常的输入队列。这种情况下接收函数MSG_OOB不能用来读带外数据。
SO_ RECVBUF SO_SNDBUF 内核的接收,发送缓冲区。UDP可能会造成缓冲区的溢出。
SO_RECLOWAT SO_SNDLOWAT 接收低水位标记,发送低水位标记。适用于select操作,当缓冲区的字节数大于所设的标记,select函数才返回。默认情况下为1字节。
SO_RCVTIMEO SO_SNDTIMEO 设置套接字接收和发送的一个超时值。
SO_REUSEADDR 1.此选项允许一个监听服务器捆绑其终所周知的端口,即使以前建立的将该端口用作他们本地端口的链接的仍然存在。它允许我们在多进程服务器中,父进程崩溃,子进程仍在为客户服务的时候,可以重新启动服务器。2.允许在同一个端口上启动同一个服务器的多个实例。3.允许单个进程捆绑同一端口到多个套机字。常用于udp类型套接字获取客户请求的目的地址。4.允许完全重复的捆绑。此种情况常用于多播和广播的情况。
SO_REUSEPORT
SO_TYPE 本选项返回了套接字地址的类型,通常由启动时继承了套接字的进程使用。
SO_USELOOPBACK 本选项仅用于AF_ROUTE 的套接字,默认为开启,相应的套接字将接收在其上发送的任何一个数据报的副本。
这里我们再介绍一个TCP选项。TCP_NODELAY:
默认情况Nagle(如果某个链接上有待确认数据,那么在数据确认之前,不会有发送相应小分组的行为)下是开启的,目的在于减少广域网的小分组数量,但是牺牲的延迟的指标。当需要每次产生一个小分组的回应的时候,应该开启此选项,禁止Nagle算法
相关文章推荐
- socket网络编程中常用的SO_KEEPALIVE套接字选项
- 网络编程--套接字选项
- 网络编程学习_套接字选项
- Linux网络编程之套接字选项设置
- 网络编程--套接字选项(一)
- 我的网络编程学习之路——套接字选项
- Linux 网络编程 套接字选项
- Windows的网络编程-之五-套接字选项和I/O控制
- Linux 之 网络编程之套接字选项
- Linux网络编程基础--socket常用选项
- 网络编程--套接字选项
- 【python】网络编程-套接字常用函数
- (七)Linux网络编程--7. TCP/IP协议 8. 套接字选项
- Linux网络编程之套接字选项设置 .
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 套接字选项的使用 (心跳检测、绑定地址复用)
- Linux网络编程--8. 套接字选项
- Linux网络编程:10. 原始套接字
- ASP.NET网络编程中常用到的27个函数集
- ASP.NET网络编程中常用到的27个函数集
- Linux编程常用的函数(八) 网络编程