您的位置:首页 > 理论基础 > 计算机网络

网络编程-常用的套接字选项

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主要设置套接字的非阻塞态。

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算法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息