首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android VpnService写入数据包错误-没有可用的缓冲区空间

Android VpnService写入数据包错误-没有可用的缓冲区空间
EN

Stack Overflow用户
提问于 2014-05-13 12:50:58
回答 1查看 507关注 0票数 4

我正在向Android中的VpnService实例写入UDP包,但间歇性地收到如下错误:

代码语言:javascript
复制
java.io.IOException: write failed: ENOBUFS (No buffer space available)
at libcore.io.IoBridge.write(IoBridge.java:455)
at java.io.FileOutputStream.write(FileOutputStream.java:187)
at java.io.OutputStream.write(OutputStream.java:82)

只有一个DatagramSocket用于发送和接收数据包,所以我认为我没有泄漏内存。我还检查了我的堆使用情况,它仍然稳定在10-12MB。对于我正在传输的TCP数据包,我没有得到这个错误。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-22 20:43:50

我刚刚在我自己的虚拟专用网实现中遇到了这个问题(open source,如果有人想要一个工作示例的话)。

在我的例子中,这是因为我向VPN接口写回的TCP数据包比预期的要大,因为我的代码没有正确处理最大段大小。

这不是由于某个通用缓冲区等待刷新,因此对于接收应用程序来说太大的数据包将永远失败,并返回ENOBUFS。

虽然我在任何地方都找不到它的文档,但我认为这是一般的原因:如果您尝试向VPN写入任何大于VPN预期的数据包,您将遇到ENOBUFS。

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

https://stackoverflow.com/questions/23623035

复制
相关文章

相似问题

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