4.4.2 发送和接收缓存区的大小

一旦创建了一个Socket或DatagramSocket实例,操作系统就必须为其分配缓存区以存放接收的和要发送的数据。(我们将在第6.1节对其进行更详细的介绍)

Socket,DatagramSocket:设置和获取发送接收缓存区大小

figure_0110_0132

getReceiveBufferSize(),setReceiveBufferSize(),getSendBufferSize(),和setSendBufferSize()方法分别用于获取和设置接收发送缓冲区的大小(以字节为单位)。需要注意的是,这里指定的大小只是作为一种建议给出的,实际大小可能与之存在差异。

还可以在ServerSocket上指定接收缓冲区大小。不过,这实际上是为accept()方法所创建的新Socket实例设置接收缓冲区大小。为什么可以只设置接收缓冲区大小而不设置发送缓冲区的大小呢?当接收了一个新的Socket,它就可以立刻开始接收数据,因此需要在accept()方法完成连接之前设置好缓冲区的大小。另一方面,由于可以控制什么时候在新接收的套接字上发送数据,因此在发送之前还有时间设置发送缓冲区的大小。

ServerSocket:设置/获取所接受套接字的接收缓冲区大小

figure_0110_0133

getReceiveBufferSize()和setReceiveBufferSize()方法用于获取和设置由accept()方法创建的Socket实例的接收缓冲区的大小(字节)。