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;
}    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章