//这是一个简单的发送ChannelBuffers类型数据事例.
@Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e)
throws Exception {
ChannelBuffer buffer = ChannelBuffers.buffer(10); //表示创建一个10个字节的包.
buffer.writeByte(126); //给数据写入一个byte类型的占一个字节.
for(byte b : buffer.array()) {
System.out.print(b + ",");
}
for(byte b : buffer.array()) {
System.out.print(b + " ");
}
e.getChannel().write(buffer);
}
//输出:
126,0,0,0,0,0,0,0,0,0
要想弄懂ChannelBuffers就必须在先了解java数据类型所占字节:
byte 1个字节
short 2个字节
char 2个字节
int 4个字节
long 8个字节
float 4个字节
double 8个字节
如果:
buffer.writeInt(Integer.MAX_VALUE);
输出:
127,-1,-1,-1,0,0,0,0,0,0
为什么是这么个结果也?
127:0111 1111
-1:1111 1111
int类型占4个字节,把127,-1,-1,-1 组装起来.正好就是int类型的最大值.