gpt4 book ai didi

Java inputStream 到字符串挂起

转载 作者:行者123 更新时间:2023-11-30 04:11:35 26 4
gpt4 key购买 nike

我正在开发一个工具来获取客户端信息,发送到服务器,然后再次接收信息(代理)。我还尝试转储从服务器接收的数据。我可以读取 inputStream 的整数表示,但无法读取字符串格式。我已经尝试了下面的示例,但它挂起并且从未连接到服务器。另外,System.out.println(inputStream.nextLine()) 仅显示一行并挂起。

public void run() {
try {
int i;
while ((i = inputStream.read()) != -1){
System.out.println(IOUtils.toString(inputStream));
outputStream.write(i);
}
} catch (IOException e) {
System.out.println("Lost connection to the client.");
}
}

最佳答案

我对此的猜测是,您正在从输入流中读取,然后也使用 IOUtils 库从流中读取。我怀疑您的应用程序正在从输入流中读取第一个字节,然后使用 IOUtils 库读取输入流的其余部分,然后打印出读取的初始字节。

在循环内调用 IOUtils.toString(inputstream) 没有任何意义。该方法调用会将输入流中的所有数据放入字符串中。在这种情况下为什么要有循环?

您可能想尝试不使用 IOUtils 库来实现此目的。只需读取一个字节的数据,将其插入 StringBuilder,然后打印该字节。在这种方法中,循环是必要的,您可能会得到您正在寻找的东西。

尝试类似的操作,但根据需要进行修改以同时将数据打印到输出流:

public static String inputStreamToString(final InputStream is, final int bufferSize)
{
final char[] buffer = new char[bufferSize];
final StringBuilder out = new StringBuilder();
try {
final Reader in = new InputStreamReader(is, "UTF-8");
try {
for (;;) {
int rsz = in.read(buffer, 0, buffer.length);
if (rsz < 0)
break;
out.append(buffer, 0, rsz);
}
}
finally {
in.close();
}
}
catch (UnsupportedEncodingException ex) {
/* ... */
}
catch (IOException ex) {
/* ... */
}
return out.toString();
}

关于Java inputStream 到字符串挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19483507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com