• 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的大小。

  • 相关阅读:
    Confluence 6 在升级过程中查看合并日志
    Confluence 6 从 WIKI 标记整合到基于 XHTML 的存储格式
    Confluence 6 升级完成后的检查
    Confluence 6 超过当前许可证期限进行升级
    HDU2571--命运---DP
    HDU 2084 DP经典例子---数塔问题
    紫书第二章
    求组合数
    欧拉函数
    二分幂/快速幂
  • 原文地址:https://www.cnblogs.com/wangshuo/p/2022279.html
Copyright © 2020-2023  润新知