getsockopt函数的使用

函数原型为:

#include <netinet/socket.h>

int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);

                                                                                                          Return: 0 if OK, –1 on error

这个函数用于获得socket的各种特性,即socket options. 结果放在函数的后两个参数中,这两个参数是value-result。

sockfd 是所要查看的socket的file descriptor

level 和 optname 在Figure 7.1 中(Unix Network Programming, P.193)

optval,getsockopt() 函数把所得到的socket option的值放到这个参数之中。它的数据类型要和Figure 7.1中的Datatype一致。

optlen 作为参数是表示optval 的大小。作为结果是表示返回的 optval 的大小。

 

#include "unp.h"
#include <netinet/tcp.h>

int main(int argc, char **argv)
{
	int fd, val;
	socklen_t len;
	char strres[128];
	
	len = sizeof(val);
	fd = Socket(AF_INET, SOCK_STREAM, 0);
	if(getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) == -1)
	{
		err_ret("getsockopt error");
	}
	else 
	{
		if(len != sizeof(int))
			snprintf(strres, sizeof(strres), "sizeof (%d) not sizeof(int)", len);
		else
			snprintf(strres, sizeof(strres), "%d", val);
		printf("default = %s\n", strres);
	}
	close(fd);
	exit(0);
}
这里是查看receive buffer的大小。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值