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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00即使向上读取 10 个字节,也超过 10 个字节。

您不能假设读取会填充缓冲区。请参阅 readFull() 以获取替代方案,或者循环直到获得所需的所有数据。

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

最新更新