Scoket缓冲区必须在连接之前去创建:缓冲区大小需要根据具体情况进行设置,一般要低于64K(TCP能够指定的最大负重载数据量,TCP的窗口大小是由16bit来确定的),增大缓冲区可以增大网络I/O的性能,而减少缓冲区有助于减少传入数据的backlog(就是缓冲长度,因此提高响应速度)。对于Socket和SeverSocket如果需要指定缓冲区大小,必须在连接之前完成缓冲区的设定。
这里的缓冲区大小在android系统中不一定是最大低于64K,因为测试了一下,我在传输camera的预览数据的时候,
默认客户端的sendbuffersize的大小是524288,我设置他为10Mb的时候再去获取一下他的sendbuffersize得到来的是4Mb的,所以最大的为4Mb
默认服务器的receiveBufferSize的代销是110208,。
代码如下:
Socket socket =newSocket();
//输出缓冲区大小
System.out.println(socket.getSendBufferSize());
System.out.println(socket.getReceiveBufferSize());
//重置缓冲区大小
socket.setSendBufferSize(1024*32);
socket.setReceiveBufferSize(1024*32);
//再次输出缓冲区大小
System.out.println(socket.getSendBufferSize());
System.out.println(socket.getReceiveBufferSize());
详情可参考:http://blog.sina.com.cn/s/blog_616e189f0100s3px.html