在讀本博文時請先看本博文http://blog.csdn.net/u013711616/article/details/51163983對getsockopt()與setsockopt()函數有所瞭解
#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;
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;
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;
}