gpt4 book ai didi

java - StringBuffer 未正确打印

转载 作者:行者123 更新时间:2023-12-01 22:56:34 27 4
gpt4 key购买 nike

我正在尝试从InputStream 中读取一些数据,然后将它们放入StringBuffer 中进行打印。

我把这段代码放在main方法中。

我的问题是,只有在调试代码时才打印 StringBuffer,当我正常运行它时,它不会被打印。

我的代码:

Socket s = new Socket();
String host = "";
PrintWriter s_out = null;
BufferedReader s_in = null;
InputStream in = null;

s.connect(new InetSocketAddress(host, 23));

//writer for socket
s_out = new PrintWriter(s.getOutputStream(), true);
//reader for socket
s_in = new BufferedReader(new InputStreamReader(s.getInputStream()));
in = s.getInputStream();

if(s.isConnected() == true && s.isInputShutdown() == false && s.isOutputShutdown() == false){
StringBuffer sb = new StringBuffer();
boolean found = false;
char ch;
int numberOfBytesThatCanBeRead = in.available();

for(int j = 0; j < numberOfBytesThatCanBeRead; j++){
ch = (char) s_in.read();
//System.out.print(ch);
sb.append(ch);
}

System.out.print(sb.toString());

s_in.close();
in.close();
s_out.close();
s.close();

这个变量的正确值是564,但只有在调试代码时才返回,正常运行时返回21。

int numberOfBytesThatCanBeRead = in.available();

那么,我的问题是:为什么当我调试代码时,StringBuffer的结果是正确的,而当我正常运行时却不是?

谢谢!

最佳答案

您在端口上没有循环监听,这意味着您会在对方完成发送所有数据之前立即运行并结束。

当您调试时,这意味着在您尝试阅读之前有足够的时间让所有内容到达。

循环读取,直到您需要的所有数据都到达。

关于java - StringBuffer 未正确打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23939467/

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