服务器根据向我发送一个int
DataOutputStream stdOut = new DataOutputStream(myServerSocket.getOutputStream());
stdOut.writeInt(1);
stdOut.flush();
我试着从我的客户那里读到:
BufferedInputStream dIn = new BufferedInputStream(myClientSocket.getInputStream());
byte[] reception = new byte[4]; // writeInt() writes 4 bytes
int status = -1;
status = dIn.read(reception, 0, 4);
// status = 1
// (int) reception = 0
我正在等待4个字节来计算发送的Int。然而,它只接收1个字节,并在不等待剩余字节的情况下处理它。因为我等待4个字节,所以我尝试了这个:
int count = 0;
while(count < 4) {
status = dIn.read(reception);
count += status;
System.out.println("Read: " + count);
}*/
我看到它先读1个字节,然后读3个字节。
- 信封上,当我打印HEX结果时,我得到:00 00 01 00
- 看起来是这样发送的(按顺序):00 00 00 01
- 并分两部分接收:00,然后00 00 01
- 它被存储为:00 00 01 00
这就是我没有得到int 1的原因。
- 如果不等待4,读取(字节,0,4)的目的是什么字节
- 如何以真正的顺序简单地获取我的4个字节
注意:当客户端使用DataInputStream时,readInt()可以正常工作。。。
使用DataInputStream
及其readInt()
方法。
DataInputStream dIn = new DataInputStream(new BufferedInputStream(myClientSocket.getInputStream()));
int status = dIn.readInt();