服务器根据以下内容向我发送一个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个字节。
这就是为什么我没有得到我的int 1。
注意:当客户端使用DataInputStream时,readInt()工作正常......
答案 0 :(得分:2)
使用DataInputStream
及其readInt()
方法。
DataInputStream dIn = new DataInputStream(new BufferedInputStream(myClientSocket.getInputStream()));
int status = dIn.readInt();