问个关于byte[]的问题 你可以把报文长度放在包头发过来,再根据需要去开buffer。比如socket的头部前10位表示你的长度。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 fileReader = new BufferedReader(new FileReader(filedName))用这个读 StringBuilder sb = new StringBuilder();int len = 0;while((r=in.read(bt))!=-1){sb.apend(new String(bt,"GBK"));len+=r;}System.out.println("收到的报文是:" + sb.toString());System.out.println("字节数是:" + len); in=socket.getInputStream(); java.io.ByteArrayOutputStream bos=new java.io.ByteArrayOutputStream(); byte[] buff=new byte[1024];int len=0;while((len=in.read(buff))!=-1){ bos.write(buff,0,len);}byte[] result=bos.toByteArray();//这就是所有的字节。 如果没记错的话,in.available()就是实际的字符个数 包头定义多长,就应该有多长,除非你用特定字符表示包结束。如果用包头定义的长度,那么读多少字节可以直接得到,而不是在读的时候计算。如果使用特定字符表示包结束,那么……用ByteArrayOutputStream来构造byte数组吧,别直接创建byte[]了。疑问:从这段代码来看,你的DataInputStream是没必要的,和直接从socket的getInputStream()得到的流读数据没有任何区别。 急求课后习题的答案:Java程序设计教程(第2版) 雍俊海 编著 清华大学出版社 用ResourceBundle访问属性文件报异常,就几行代码 Java 正则表达式 实现替换 (ParamStr(0),java;如何实现?找不到相同的 这个操作符是什么意思? SQL问题 自古都有英雄救美啊,我这么简单的问题,帮帮我好么 时间相减 懒汉式单例优化方案 java面试题(都进来尝试下) 请各位帮忙看下这个段求水仙花数的代码有什么问题 从字符串中解析参数的问题
用这个读
int len = 0;
while((r=in.read(bt))!=-1){
sb.apend(new String(bt,"GBK"));
len+=r;
}
System.out.println("收到的报文是:" + sb.toString());
System.out.println("字节数是:" + len);
java.io.ByteArrayOutputStream bos=new java.io.ByteArrayOutputStream();
byte[] buff=new byte[1024];
int len=0;
while((len=in.read(buff))!=-1){
bos.write(buff,0,len);
}
byte[] result=bos.toByteArray();//这就是所有的字节。
如果用包头定义的长度,那么读多少字节可以直接得到,而不是在读的时候计算。
如果使用特定字符表示包结束,那么……用ByteArrayOutputStream来构造byte数组吧,别直接创建byte[]了。疑问:从这段代码来看,你的DataInputStream是没必要的,和直接从socket的getInputStream()得到的流读数据没有任何区别。