Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android VPN服务写入数据包错误-没有可用的缓冲区空间_Java_Android_Sockets - Fatal编程技术网

Java Android VPN服务写入数据包错误-没有可用的缓冲区空间

Java Android VPN服务写入数据包错误-没有可用的缓冲区空间,java,android,sockets,Java,Android,Sockets,我正在将UDP数据包写入Android中的一个VPN服务实例,但偶尔会出现如下错误: 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.wri

我正在将UDP数据包写入Android中的一个VPN服务实例,但偶尔会出现如下错误:

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数据包时没有收到此错误。有什么建议吗?

我只是在自己的VPN实现中遇到了这个问题(如果有人想要一个工作示例的话)

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

这并不是因为某些通用缓冲区等待刷新,因此对于接收应用程序来说太大的数据包将永远无法使用ENOBUFS

尽管我在任何地方都找不到它的文档,但我认为这通常是原因:如果您试图向VPN写入任何数据包,而这些数据包的大小都比VPN预期的要大,那么您将遇到ENOBUFS