首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python socket.getsockopt总是为TCP_WINDOW_CLAMP返回1

Python socket.getsockopt总是为TCP_WINDOW_CLAMP返回1
EN

Stack Overflow用户
提问于 2016-04-09 15:42:55
回答 1查看 2.5K关注 0票数 1

我试图在我的套接字上设置TCP_WINDOW_CLAMP选项

代码语言:javascript
运行
复制
In [1]: import socket
In [2]: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
In [3]: sock.setsockopt(socket.SOL_SOCKET, socket.TCP_WINDOW_CLAMP, 1000000)

然而,当我检查这个设置是否正确时,我总是得到一个1的值。

代码语言:javascript
运行
复制
In [4]: sock.getsockopt(socket.SOL_SOCKET, socket.TCP_WINDOW_CLAMP)
Out[4]: 1

这是旗子还是特殊价值?

编辑:平台

我在Ubuntu 14.04上运行Anaconda Python

代码语言:javascript
运行
复制
$ python
Python 3.4.4 |Anaconda 2.3.0 (64-bit)| (default, Jan 11 2016, 13:54:01) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
EN

回答 1

Stack Overflow用户

发布于 2016-10-23 18:32:38

实际上,这个文档看起来是清晰的,我在评论中提到的猜测是正确的--在tcp(7)手册页,就在TCP_WINDOW_CLAMP描述的上面,上面写着:

若要设置或获取setsockopt选项,请调用getsockopt(2)读取,或调用setsockopt(2)将选项级别参数设置为IPPROTO_TCP编写该选项。

因此,您需要用socket.SOL_SOCKET替换socket.IPPROTO_TCP (这显然与socket.SOL_TCP相同,至少在linux上是如此--不确定两者之间的区别是什么)。现在,您正在处理SOL_SOCKET命名空间中的一些不相关的其他选项,这些选项的分配号码恰好与TCP_WINDOW_CLAMP相同,因此结果非常混乱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36519016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档