Java BufferedReader不';无法从tcp服务器读取数据
所以我的android应用程序中有一个非常奇怪的bug。我正在尝试连接到TCP服务器,并交换一些消息,其实并不复杂。我已经设法克服了它在开始时遇到的所有问题,但现在我被一个bug困住了,我希望有人知道如何修复它 我连接到服务器并成功地获取输入和输出流,但是当从服务器读取响应时,程序冻结。我对此进行了研究,我知道这是因为没有来自服务器的消息。但我也知道服务器会响应,因为我已经为iOS制作了相同的应用程序,它接收到了所有信息。这可能是安卓系统的问题吗?或者只是系统中的一些设置 下面是一段代码,告诉您这不是什么大问题。我在代码中没有太多的东西,但是如果你需要查看它的其余部分,请询问 提前谢谢Java BufferedReader不';无法从tcp服务器读取数据,java,android,tcp,bufferedreader,Java,Android,Tcp,Bufferedreader,所以我的android应用程序中有一个非常奇怪的bug。我正在尝试连接到TCP服务器,并交换一些消息,其实并不复杂。我已经设法克服了它在开始时遇到的所有问题,但现在我被一个bug困住了,我希望有人知道如何修复它 我连接到服务器并成功地获取输入和输出流,但是当从服务器读取响应时,程序冻结。我对此进行了研究,我知道这是因为没有来自服务器的消息。但我也知道服务器会响应,因为我已经为iOS制作了相同的应用程序,它接收到了所有信息。这可能是安卓系统的问题吗?或者只是系统中的一些设置 下面是一段代码,告诉您
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);
}
希望下面的代码工作良好
InputStream in = tcpSocket.getInputStream();
if(in == null)
return null;
Log.e("socket", "input stream created alright");
out.println("handheld#" + "1111" + "#connection request");
byte[] buff = new byte[1024];
int read = -1;
long totalRead = 0;
while ((read = in.read(buff)) > 0)
{
out.write(buff, 0, read);
Log.i("readed Byte ", new String(buff));
totalRead += read;
if (totalRead % 100 * 1024 == 0)
{
System.out.printf("%d bytes read\n", totalRead);
}
}
我已经在我的示例中实现了从inputstream成功读取数据 它冻结在第一个in.read()中;当然有。应该是。。而(fromServer!=-1)fromServer=in.read();没错,谢谢。但是现在试过了,已经纠正了,它仍然不动…谢谢你的耐心,真的。我了解您试图预防的问题以及您正在进行的优化。但你认为这对我有帮助吗?你认为这是我的密码吗?(虽然我还没试过)我试过了,还是一样的问题。我真的认为这与我设备上的安卓系统或其他东西有关。还能是什么?代码正确,服务器响应。。