Scoket緩沖區(qū)必須在連接之前去創(chuàng)建:緩沖區(qū)大小需要根據(jù)具體情況進(jìn)行設(shè)置,一般要低于64K(TCP能夠指定的最大負(fù)重載數(shù)據(jù)量,TCP的窗口大小是由16bit來(lái)確定的),增大緩沖區(qū)可以增大網(wǎng)絡(luò)I/O的性能,而減少緩沖區(qū)有助于減少傳入數(shù)據(jù)的backlog(就是緩沖長(zhǎng)度,因此提高響應(yīng)速度)。對(duì)于Socket和SeverSocket如果需要指定緩沖區(qū)大小,必須在連接之前完成緩沖區(qū)的設(shè)定。
這里的緩沖區(qū)大小在android系統(tǒng)中不一定是最大低于64K,因?yàn)闇y(cè)試了一下,我在傳輸camera的預(yù)覽數(shù)據(jù)的時(shí)候,
默認(rèn)客戶端的sendbuffersize的大小是524288,我設(shè)置他為10Mb的時(shí)候再去獲取一下他的sendbuffersize得到來(lái)的是4Mb的,所以最大的為4Mb
默認(rèn)服務(wù)器的receiveBufferSize的代銷是110208,。
代碼如下:
Socket socket =newSocket();
//輸出緩沖區(qū)大小
System.out.println(socket.getSendBufferSize());
System.out.println(socket.getReceiveBufferSize());
//重置緩沖區(qū)大小
socket.setSendBufferSize(1024*32);
socket.setReceiveBufferSize(1024*32);
//再次輸出緩沖區(qū)大小
System.out.println(socket.getSendBufferSize());
System.out.println(socket.getReceiveBufferSize());
詳情可參考:http://blog.sina.com.cn/s/blog_616e189f0100s3px.html