我的应用程序存在一些问题。我通过套接字通过BufferedReader
接收数据。我循环使用while ((sLine = reader.readLine ()) != null)
并将sLine附加到StringBuilder对象。我还在构建器上花了一条新线。
计划是,一旦构建器全部完成,将调用String sTotal = builder.toString()
并将总计传递给下一个例程。
然而,下一个例程是为每一行调用一次而不是整个字符串。例程调用在上面的循环之外,所以我真的不知道为什么!
希望有人能帮忙......
编辑:下面的代码摘录。
public void run() {
try {
oServerSocket = new ServerSocket(iPort);
while ((!Thread.currentThread().isInterrupted()) && (!bStopThread)) {
try {
oSocket = oServerSocket.accept();
this.brInput = new BufferedReader(new InputStreamReader(this.oSocket.getInputStream()));
StringBuilder sbReadTotal = new StringBuilder();
String sReadXML = "";
while ((sReadXML = brInput.readLine()) != null) {
sbReadTotal.append("\n");
sbReadTotal.append(sReadXML);
}
sReadXML = sbReadTotal.toString();
Log.d("XMLDATA", sReadXML);
processXML(sReadXML);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
/* Nothing Yet */
e.printStackTrace();
}
}
答案 0 :(得分:1)
如果您要退出内部while
循环,则表示您已到达输入流的末尾(当readLine()
返回null
according to the docs时)。
您应该查看客户端,而不是服务器。什么在建立客户端套接字?您确定它没有为它发送的每一行建立单独的连接吗?