您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> winsock定义的socket缓冲区大小与getsockopt获取到的socket缓冲区大小差2倍

winsock定义的socket缓冲区大小与getsockopt获取到的socket缓冲区大小差2倍

来源:网络整理     时间:2016/7/26 13:47:27     关键词:

关于网友提出的“ winsock定义的socket缓冲区大小与getsockopt获取到的socket缓冲区大小差2倍”问题疑问,本网通过在网上对“ winsock定义的socket缓冲区大小与getsockopt获取到的socket缓冲区大小差2倍”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: winsock定义的socket缓冲区大小与getsockopt获取到的socket缓冲区大小差2倍
描述:

大家好,最近遇到一个socket 发送的问题,在这个过程中顺便学习了一下关于socket缓冲区的知识,在这里有一个疑问:
我在winsock2.h里查看到SO_SNDBUF和SO_RCVBUF的定义如下:
#define SO_SNDBUF       0x1001          /* send buffer size */
#define SO_RCVBUF       0x1002          /* receive buffer size */
两者大小为4k左右
但我在程序里用getsockopt获取这两个值的大小时

if (getsockopt(m_pListenContext->m_Socket, 
    SOL_SOCKET, 
    SO_SNDBUF, 
    (char*)&optVal, 
    &optLen) != SOCKET_ERROR)
    pirnt("SockOpt Sendbuff Value: %d\n", optVal);
 
if (getsockopt(m_pListenContext->m_Socket, 
    SOL_SOCKET, 
    SO_RCVBUF, 
    (char*)&optVal, 
    &optLen) != SOCKET_ERROR)
    pirnt("SockOpt Recvbuff Value: %d\n", optVal);

返回的值却都是8196,是定义的2倍,这是为什么呢?请大家帮忙看看,谢谢先!
解决方案1:

socket缓冲区的默认大小为8K,这个是在哪里定义的?
windows内核文件中定义的,在提供给开发者的SDK中,这个定义不提供。
有兴趣可以看一下linux内核中的tcpip协议栈(windows和它一样),这里面有相关的8k缓冲区的定义

解决方案2:

相应的.h文件里面。

解决方案3:

引用 4 楼 detective0922 的回复:
Quote: 引用 2 楼 worldy 的回复:

大家好,最近遇到一个socket 发送的问题,在这个过程中顺便学习了一下关于socket缓冲区的知识,在这里有一个疑问:
 我在winsock2.h里查看到SO_SNDBUF和SO_RCVBUF的定义如下:
#define SO_SNDBUF       0x1001          /* send buffer size */
 #define SO_RCVBUF       0x1002          /* receive buffer size */
两者大小为4k左右  //这个说法从哪来的?

谢谢答复,我是这样理解的,0x1001和0x1002转换成十进制是4097和4098,为4k左右,不知道我理解的是否正确?

错了,那两个是标识,不是大小 解决方案4:

大家好,最近遇到一个socket 发送的问题,在这个过程中顺便学习了一下关于socket缓冲区的知识,在这里有一个疑问:
 我在winsock2.h里查看到SO_SNDBUF和SO_RCVBUF的定义如下:
#define SO_SNDBUF       0x1001          /* send buffer size */
 #define SO_RCVBUF       0x1002          /* receive buffer size */
两者大小为4k左右  //这个说法从哪来的?


以上介绍了“ winsock定义的socket缓冲区大小与getsockopt获取到的socket缓冲区大小差2倍”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2943977.html

相关图片

相关文章