getsockopt()与setsockopt()函数 测试代码

在读本博文时请先看本博文http://blog.csdn.net/u013711616/article/details/51163983对getsockopt()与setsockopt()函数有所了解
/*************************************************************************
    > File Name: getsockopt.c
    > Author: 
 ************************************************************************/
#include <stdio.h>
#include <errno.h>
#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>

int main(int arfc, char *argv[])
{
    int retval;
    int sockfd = 0;
    int send_size = 0;
    int recv_size = 0;

    int len = 0;

    //创建一个套接字
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
    {
        printf("socket err\n");
        return -1;
    }

    //读取缓冲区默认设置情况,获取原始发送数据的缓冲区大小
    len = sizeof(send_size);
    retval = getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &send_size, &len);
    if (retval)
    {
        printf("获取发送缓冲区大小错误\n");
    }
    printf("发送缓冲区原始大小为:%d 字节\n", send_size);

    len = sizeof(recv_size);
    retval = getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &recv_size, &len);
    if (retval)
    {
        printf("获取发送缓冲区大小错误\n");
    }
    printf("接收缓冲区原始大小为:%d 字节\n", recv_size);

    //设置发送缓冲去大小
    send_size = 1024;                   /*发送缓冲区大小为8K*/
    len = sizeof(send_size);
    retval = setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &send_size, len);
    if(retval)
    {
        printf("设置发送缓冲区大小错误\n");
    }
    //读取缓冲区默认设置情况,获取原始发送数据的缓冲区大小
    len = sizeof(send_size);
    retval = getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &send_size, &len);
    if (retval)
    {
        printf("获取发送缓冲区大小错误\n");
    }
    printf("发送缓冲区大小为:%d 字节\n", send_size);

    //设置接收缓冲区大小
    recv_size = 2048;                   /*接收缓冲区大小为8K*/
    len = sizeof(recv_size);
    retval = setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &recv_size, len);
    if(retval)
    {
        printf("设置接收缓冲区大小错误\n");
    }
    len = sizeof(recv_size);
    retval = getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &recv_size, &len);
    if (retval)
    {
        printf("获取发送缓冲区大小错误\n");
    }
    printf("接收缓冲区大小为:%d 字节\n", recv_size);

    return 0;
}    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章