zoukankan      html  css  js  c++  java
  • 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的大小。

  • 相关阅读:
    初学git(一):创建本地“仓库”
    git常用命令
    Linux学习(一):从图形界面进入命令行及命令行进入图形界面
    继承与派生
    数据类型和表达式
    UDP
    网络与通信
    枚举类型
    结构体
    第一个随笔
  • 原文地址:https://www.cnblogs.com/wangshuo/p/2022279.html
Copyright © 2011-2022 走看看