java dataoutput流发送更多字节

时间:2012-08-11 09:36:45

标签: java

我有一台服务器正在侦听端口和ip以及一台将连接到此服务器的客户端。

DataInputStream meterin=new DataInputStream(socket.getInputStream);
DataOutputStream modemds=new DataOutputStream(modems.getOutputStream);

现在服务器正在这里发送一些数据:(CA F0 00 00 00 00 00 00 00 3A)。但当我读到这个时

int c;
byte bt[]=new byte[11]
c=meterin.read(bt,0,11)`
System.out.println("bytes"+c)  // it is returning 10 bytes

modemds.write(bt,0,c)

但在客户端我正在接受。 (CA F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00)。 即使它向上读取10个字节也是10个字节以上。

2 个答案:

答案 0 :(得分:1)

您无法假设读取将填充缓冲区。请参阅readFully()以获取替代方法,否则循环直到获得所需的所有数据。

答案 1 :(得分:0)

通过一些假设和fFrom代码,看起来你正在从服务器读取数据,然后将其转发给另一个监听器或你称之为客户端的数据。因此,在客户端代码,请检查接收缓冲区是否初始化为超过正在发送的数据..这将导致在输出中添加额外的字节。如果是这种情况,请使用System.arrayCopy从接收缓冲区中复制出实际的字节数(假设客户端代码是java)。