阅读InputStream
的{{1}}得到了一个奇怪的结果。
当我从程序发送数据时,一次得到一个有效的结果。
当我从单独的程序执行此操作时,我会获得有效的数据,但是服务器会继续读取同一条消息,即使我不发送任何内容,也只需连接到套接字即可获得空数组。
Socket
输出(仅连接到插座):
in = socket.getInputStream();
out = socket.getOutputStream();
dIn = new DataInputStream(in);
while(this.isAlive()) {
try {
dIn.read(buffer);
StringBuilder builder = new StringBuilder();
for(int i = 0; i < buffer.length; i++) {
builder.append(buffer[i]).append(" ");
}
builder.append("\n");
System.out.println(builder.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
将Javadoc引用为read():
返回:
读入缓冲区的字节总数,如果由于到达流的末尾而没有更多数据,则返回-1。
您的代码根本不检查结果。您假设,所有字节均已读取,并且有时根本不起作用。
换句话说:永远总是总是,当您调用某个返回此类值的read()
方法时,您的代码绝对必须检查结果以确保(预期)数据为实际上是通过阅读获得的。
这很可能是您问题的一部分。但是要确定,您需要使用更多信息来完善您的问题。