Я пытаюсь создать простое приложение с клиентом android и java-сервером Андроид-клиент может отправлять сообщения серверу (java) , а когда я пытаюсь прочитать ответ сервера Ошибка: сокет закрыт. линия (если ((receiveMessage = receiveRead.readLine())! = NULL))Android: socket communication
public class ClientConnectorTask extends AsyncTask<String, Void, Integer> {
private Socket client;
private PrintWriter printwriter;
protected Integer doInBackground(String...strings) {
// validate input parameters
if (strings.length <= 0) {
return 0;
}
// connect to the server and send the message
try {
client = new Socket("192.168.1.4", 7777);
printwriter = new PrintWriter(client.getOutputStream(),true);
//while(true){
InputStream istream = client.getInputStream();
BufferedReader receiveRead = new BufferedReader(new InputStreamReader(istream));
String receiveMessage;
while (true){
// printwriter.write(strings[0]);
printwriter.print(strings[0]);
printwriter.flush();
printwriter.close();
if((receiveMessage = receiveRead.readLine()) != null) //receive from server
{
System.out.println(receiveMessage); // displaying at DOS prompt
}
}
//}
//client.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
protected void onPostExecute(Long result) {
return;
}
}
Я не уверен в этом, вот почему это комментарий. Я считаю, что это '' printwriter.close(); '' может закрывать сокет. Однако, как я уже сказал, я не уверен. Если вы удалите его, он все равно выбросит ошибку? Кроме того, вы уверены, что не закрываете его на стороне сервера? – Fred
Спасибо, что на стороне сервера reply.in я не закрываю. если я не сделаю это, то данные не дойдут до сервера –