经过查找网上的资料,总结如下
在做客户端与服务端时,
服务端都是先读后写的,因为read方法是阻塞的.只有读到,才会向下执行.
//获取socket中的输出流对象来响应数据
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
//发送数据类型
dos.writeByte(1);
//发送数据长度
String str = "接受到了客户端的响应数据!";
byte[] content = str.getBytes("utf-8");
dos.writeInt(content.length);
//发送数据内容
dos.write(content);
dos.flush();
/**
* flush() 方法是清空,即清空缓冲区数据,就是说
* 你用读写流的时候,其实数据是先被读到了内存中,
* 然后用数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,
* 因为还有一部分有可能留在内存这个缓冲区中.这时候如果你调用了
* close方法关闭了读写流,那么这部分数据就会丢失,
* 所以应该再关闭读写流之前先flush(),显得清空数据.
*/
//刷新就是将内存(缓冲区)中的数据(是一个字节数组)强制写到磁盘/浏览器/控制台/文件