写入流
//send the file
ByteBuf testBuf = Unpooled.buffer();
String tokenStr = new Gson().toJson(token);
testBuf.writeInt(tokenStr.length());//写入行数
testBuf.writeBytes(tokenStr.getBytes("GBK"));
testBuf.writeInt(13);
f.channel().writeAndFlush(testBuf);
接收
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
System.out.println("receive file");
ByteBuf buf = (ByteBuf)msg;
int num = buf.readInt();//读取文件长度
byte[] nameBytes = new byte[num];
buf.readBytes(nameBytes);
fileName = new String(nameBytes,"GBK");//转化字符串
int num2 = buf.readInt();//读取另外的字符
return;
}
关于流
最终都是将文本、对象序列化成为字节流发送到管道中,接收方从管道中读取字节流,并转化成上层的字符串。