Я сделал клиентское приложение для Android-сокета 2.3.3.
Он отправляет XML-запрос, а затем получает ответ от сервера сокетов cobol.
Приложение работает отлично, моя проблема в том, что, как только мое клиентское приложение прочитало все данные, оно все еще зависает, ожидая ограничения по таймауту по какой-то причине.
Вот код:
Socket socket = new Socket(serverIpAddress, serverPort);
socket.setSoTimeout(2000);
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
String request = ("Some XML Request");
out.println(request);
out.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Log.d("Nicklas", "Reader Oprettet");
Vector<String> v = new Vector<String>();
int i = 0;
Boolean KeepGoing = true;
while (KeepGoing)
{
try
{
String lol = in.readLine();
if (lol == null) { KeepGoing = false; }
v.add(new String(lol));
i++;
}
catch (Exception e)
{
Log.d("NickEEEXX", e.toString());
KeepGoing = false;
}
}
Он всегда заканчивается уловом, за исключением «java.net.SocketTimeoutException» - даже если он отправил и получил нужные данные. Это сильно замедляет работу программы.
Я выполняю этот код как метод, а не как поток, потому что мне нужно изменить графический интерфейс в этом разделе.
У кого-нибудь есть идеи, почему он ожидает тайм-аут?