问个关于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()得到的流读数据没有任何区别。 一个随机数的程序 如何设置JComboBox一开始不选中任何项 帮忙写段线程的代码 关于List的一个问题 鼠标移动程序——在线急等 这道程序编写了一半就不会编了,请各位高手帮忙,谢谢! 一个菜鸟的URL问题 这个小程序那里错了?很简单的。 关于StringBuffer的问题 自学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()得到的流读数据没有任何区别。