Socket的setReceiveBufferSize设置结果不对

来源:8-1 消息不完整与消息粘包

xjfjian

2019-03-25

Socket的setReceiveBufferSize设置结果不对

在java项目里,socket连接后加入如下代码:

 System.out.println("rsize: "+socket.getReceiveBufferSize());
 socket.setReceiveBufferSize(120);
 System.out.println("rsize: "+socket.getReceiveBufferSize());

会得到结果:

rsize: 65536
rsize: 120

但如果在安卓里加入类似代码:

Log.e("xjfjian", "rsize: "+mSocket.getReceiveBufferSize());
mSocket.setReceiveBufferSize(120);
Log.e("xjfjian", "rsize: "+mSocket.getReceiveBufferSize());

结果不确定:
安卓9,as自带模拟器:

xjfjian: rsize: 1059840
xjfjian: rsize: 2304

安卓5,夜神模拟器:

xjfjian: rsize: 1048576
xjfjian: rsize: 2240

想了解一下原因,是安卓本身的问题还是模拟器的问题?以及有没有办法规避这个问题?

写回答

1回答

Qiujuer

2019-03-26

这个问题应该是Android系统版本限制的问题,底层系统上有上限下限的控制。

具体的我明天看看有没有办法绕过限制哈。

0
0

Socket网络编程进阶与实战 系统掌握Socket核心技术

理论+实践,系统且深入掌握Socket核心技术,从容应对各种Socket应用场景的不二之选

2316 学习 · 476 问题

查看课程