6)在一个未绑定的unix域套接字上发送数据报不会自动给这个套接字捆绑一个路径名,这一点不同于udp套接字,在一个未绑定的udp套接字上发送udp数据报道指给这个套接字捆绑一个临时端口,这一点异味这除非数据报发送端已经捆绑一个路径名到它的套接字,否则数据报接收端无妨发回应答数据报。
由于计算机的存储设备与处理器的运算能力之间有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中没这样处理器就无需等待缓慢的内存读写了。
因此,读缓存是一个动态变化的、实际用到多少才分配多少的缓冲内存,当这个连接非常空闲时,且用户进程已经把连接上接收到的数据都消费了,那么读缓存使用内存就是0。
来看下例。
protected void write(byte[] data) throws IOException {
out.write(intToByte(data.length));
out.write(data);
out.flush();
out.close();
}
public static byte[] intToByte(int num)
{
byte[] data = new byte[4];
for (int i = 0; i < data.length; i++)
{
data[3-i] = (byte)(num % 256);
num = num / 256;
}
return data;
}
使用BufferedOuputStream的时候,一定要记得调用flush()方法将数据从缓冲区中全部输出。使用完毕后,调用close()方法关闭输出流,释放与流相关的系统资源。
2)InputStream
InputStream也提供了4个非常有用的方法,如下。
public int read(byte b[]):读取b.length个字节的数据放到数组b中,返回值是读取的字节数。
public int read(byte b[], int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的数组b中。
public int available():返回输入流中可以读取的字节数。
public int close() :使用完后,对打开的流进行关闭。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-92393-4.html
小问题不断