九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

加班到十点,没有时间,弄个输出套接字接收和返回的Buffer大小的程序


加班到十点,没有时间,弄个输出套接字接收和返回的Buffer大小的程序

write by 九天雁翎(JTianLing) -- www.jtianling.com

讨论新闻组及文件

Ubuntu8.04桌面版下,测试的结果为

Socket default Receive Buffer is 87380

Socket default Send Buffer is 16384

与作者在freebsd4.8中的稍有不同,接收缓冲区略大,发送缓冲区略小。

作者得出的结果分别是57344,32768

在我的系统中,接收的缓存实在是够大

 

源代码:

 1 #include    "unp.h"
 2
 3 int main(int argc, char **argv)
 4 {
 5     int    sockfd, n;
 6     /*   struct sockaddr_in    servaddr; */
 7     int liRcvSize = 0;
 8     socklen_t liRcvLen = sizeof(liRcvSize);
 9     int liSndSize = 0;
10     socklen_t liSndLen = sizeof(liSndSize);
11
12     if ((sockfd = Socket(AF_INET, SOCK_STREAM, 0)) < 0)
13     {
14         err_sys("Socket Create failed/n");
15     }
16
17     if ( ( n = getsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &liRcvSize, &liRcvLen) ) < 0)
18     {
19         err_sys("getsocketopt recv buffer run failed/n");
20     }
21
22     if ( ( n = getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &liSndSize, &liSndLen) ) < 0)
23     {
24         err_sys("getsocketopt send buffer run failed/n");
25     }
26
27     close(sockfd);
28
29     printf("Socket default Receive Buffer is %d/n", liRcvSize);
30     printf("Socket default Send Buffer is %d/n", liSndSize);
31
32     
33     exit(0);
34 }

 

 

Thread model: posix

gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu4)

ANSI C程序

 

write by 九天雁翎(JTianLing) -- www.jtianling.com

 

分类:  网络技术 
标签: 

Posted By 九天雁翎 at 九天雁翎的博客 on 2009年02月25日

前一篇: 文件md5计算小工具 后一篇: 从Unicode到太玄经