#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int getsockopt(int sockfd, int level, int optname,void *optval, socklen_t *optlen);
功能:
获取套接字选项
参数:
sockfd:
文件描述符
level:
协议层次
SOL_SOCKET 套接字层次
IPPROTO_IP IP选项
IPPROTO_TCP TCP选项
optname:
选项名称,不同的协议层次有不同的选项名称如果要获取套接字层次的选项名称 通过man 7 socket查询
SO_BROADCAST 是否允许发送广播
SO_RCVBUF 获取接收缓冲区大小
SO_SNDBUF 获取发送缓冲区大小
SO_REUSEPORT 设置端口复用
SO_RCVTIMEO 设置接收超时时间
SO_SNDTIMEO 设置发送超时时间
optval:
获取到的选项的值
optlen:
optval的大小
返回值:
成功:
0
失败:
-1
//使用getsockopt获取接收和发送缓冲区大小
int buf_byte;
socklen_t len = sizeof(buf_byte);
if(getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &buf_byte, &len) == -1)
{
ERRLOG("getsockopt error");
}
printf("recv_buf = %dk\n", buf_byte/1024);
if(getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &buf_byte, &len) == -1)
{
ERRLOG("getsockopt error");
}
printf("send_buf = %dk\n", buf_byte/1024);