golang 有没有办法获取当前 TCP 发送缓存区剩余空间。

2022-03-23 17:25:15 +08:00
 wlgqa

例如 TCP 发送缓冲区 10k,已经写了 8K ,剩余 2K 。有办法获取吗。

3382 次点击
所在节点    Go 编程语言
27 条回复
iyaozhen
2022-03-23 23:57:46 +08:00
这个没弄过,虽然写过几个 socket 程序

不过为啥有这个需求,实际上缓冲区(特别是发送),变化非常快,对端如果没阻塞的话
wangritian
2022-03-24 00:05:27 +08:00
不要再怼认真回答你问题的人了
另外建议你讲一下原始需求
mxT52CRuqR6o5
2022-03-24 00:32:16 +08:00
做不到难道不是一种回答?(不论这个回答正确与否)
qrobot
2022-03-24 08:49:22 +08:00
golang 当然是可以的啊, 手动实现一个 TCP/IP 栈就可以了
coolrc
2022-03-24 09:52:01 +08:00
什么阴阳人
kxuanobj
2022-03-24 10:07:05 +08:00
TCP 缓冲区大小在内核是随时变化的。即便有接口让你拿到当前缓冲区大小,在系统调用返回之前,这个值也可能发生变化。
这个没啥用啊。

如果你担心数据延迟,就不应该使用 TCP 协议。
如果你担心 Write 阻塞,你可以用非阻塞操作,或者异步 io 类操作。

你能再更详细的描述一下你的需求吗?
liaotonglang
2022-03-24 18:48:53 +08:00
ss -tm 就可以看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/842415

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX