【发布时间】:2013-10-15 11:37:45
【问题描述】:
所以我的 android 应用程序中有一个非常奇怪的错误。我正在尝试连接到 TCP 服务器,并交换一些消息,其实并不复杂。我已经设法克服了它一开始的所有问题,但现在我遇到了一个错误,我希望有人知道如何解决。
我连接到服务器并成功获取输入和输出流,但是当读取服务器的响应时,程序冻结。我对此进行了研究,我知道这是因为服务器没有消息。但我也知道服务器会响应,因为我为 iOS 制作了相同的应用程序并且它接收到的一切都很好。会不会是安卓的问题?或者只是系统中的一些设置?
这是代码的 sn-p,向您展示这没什么大不了的。我在代码中没有更多内容,但如果您需要查看其余部分,请询问。
提前致谢!
try {
InetAddress serverAddr = InetAddress.getByName(serverIP);
tcpSocket = new Socket(serverAddr, serverPort);
Log.e("socket",
"created socket with " + serverIP
+ Integer.toString(serverPort));
out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(tcpSocket.getOutputStream())),
true);
Log.e("socket", "output stream created alright");
in = new BufferedReader(new InputStreamReader(
tcpSocket.getInputStream()));
Log.e("socket", "input stream created alright");
out.println("handheld#" + clientID + "#connection request");
fromServer = in.read();
while(fromServer != -1) {
fromServer = in.read(); //updated, still no good
}
connected = true;
Log.e("socket", "connect thread will finnish");
} catch (UnknownHostException e) {
Log.e("socket", "error finding host", e);
} catch (IOException e) {
Log.e("socket", "error creating socket's streams", e);
}
【问题讨论】:
-
它冻结在第一个 in.read();
-
当然可以。应该是.. while (fromServer != -1) fromServer = in.read();
-
是的,谢谢。但试了一下,现在改正了,还是不动……
标签: java android tcp bufferedreader