IO流中write()和writeShort()的小坑

来源:互联网 发布:陈忠徐紫砂壶淘宝假货 编辑:程序博客网 时间:2024/06/11 17:51

直接上代码片段:

out.writeShort(magicAndFlags);System.out.println("====================================当前数据的字节树" +byteStream.toByteArray().length);//我们度知道候选ID将会在0到1000之间out.write((short) msg.getCandidateID());out.flush();byte[] data = byteStream.toByteArray();System.out.println("====================================当前数据的字节树" +data.length);
结果:

====================================当前数据的字节树2====================================当前数据的字节树3发送请求 ( 3  bytes : inquiry for candidate 888====================================当前数据的字节树2====================================当前数据的字节树3发送投票( 3 bytes) : 

如果将第二write改成writeShort

out.writeShort(magicAndFlags);System.out.println("====================================当前数据的字节树" +byteStream.toByteArray().length);//我们度知道候选ID将会在0到1000之间out.writeShort((short) msg.getCandidateID());out.flush();byte[] data = byteStream.toByteArray();System.out.println("====================================当前数据的字节树" +data.length);return data;


结果为:

Received message (4 bytes服务器端读取的数据为:response to inquiry for candidate 888 who now has 0 vote(s)====================================当前数据的字节树2====================================当前数据的字节树4Received message (4 bytes服务器端读取的数据为:response to vote for candidate 888 who now has 1 vote(s)====================================当前数据的字节树2====================================当前数据的字节树4


总结: write虽然你转换成short,但是写入流当中不一定是short,writeShort一定写入的是short 两个字节



原创粉丝点击