sockfd:一个标识套接口的描述字。level:选项定义的层次。例如,支持的层次有SOL_SOCKET、IPPROTO_TCP。optname:需获取的套接口选项。optval:指针,指向存放所获得选项值的缓冲区。optlen:指针,指向optval缓冲区的长度值。
一种是布尔型选项,允许或禁止一种特性;允许一个布尔型选项,则将optval指向非零整形数;禁止一个选项optval指向一个等于零的整形数;对于布尔型选项,optlen应等于sizeof(int)。一种是整型或结构选项。对于整型或结构选项,optval指向包含所需选项的整形数或结构;optlen则为整形数或结构的长度。
SO_BINDTODEV | char* | 将套接字绑定到指定端口。 |
SO_BROADCAST | BOOL | 允许套接口传送广播信息。 |
SO_DEBUG | BOOL | 记录调试信息。 |
SO_DONTLINER | BOOL | 不要因为数据未发送就阻塞关闭操作。设置本选项相当于将SO_LINGER的l_onoff元素置为零。 |
SO_DONTROUTE | BOOL | 禁止选径;直接传送。 |
SO_KEEPALIVE | BOOL | 发送“保持活动”包。 |
SO_LINGER | struct linger FAR* | 如关闭时有未发送数据,则逗留。 |
SO_OOBINLINE | BOOL | 在常规数据流中接收带外数据。 |
SO_RCVBUF | int | 为接收确定缓冲区大小。 |
SO_REUSEADDR | BOOL | 允许套接口和一个已在使用中的地址捆绑(参见bind())。 |
SO_SNDBUF | int | 指定发送缓冲区大小。 |
TCP_NODELAY | BOOL | 禁止发送合并的Nagle算法。 |
getsockopt()函数
其中“类型”栏指出了optval所指向的值。仅有TCP_NODELAY选项使用了IPPROTO_TCP层;其余选项均使用SOL_SOCKET层。
有两种套接口的选项(optnam:
getsockopt()函数,用于获取任意类型、任意状态套接口的选项当前值,并把结果存入optval。
#include
#include
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t*optlen);
TCP_NODELAY是唯一使用IPPROTO_TCP层的选项,其他所有选项都使用SOL_SOCKET层。
sockfd:标识一个套接口的描述字。level:选项定义的层次;支持SOL_SOCKET、IPPROTO_TCP、IPPROTO_IP和IPPROTO_IPVoptname:需设置的选项。optval:指针,指向存放选项待设置的新值的缓冲区。optlen:optval缓冲区长度。
文章为作者独立观点,不代表股票交易接口观点