2013-03-20 12 views
0

나는 안드로이드 클라이언트와 자바 서버와 간단한 애플 리케이션을 만들려고합니다 안드로이드 클라이언트가 서버 회신 오류 : 소켓을 닫으려고하는 동안 서버 (자바) 에 메시지를 보낼 수 있습니다. 라인 (경우 ((receiveMessage = receiveRead.readLine())! = NULL))안드로이드 : 소켓 통신

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; 
    } 
} 
+0

나는 이것에 대해 잘 모르겠다. 나는이''printwriter.close();''가 소켓을 닫고 있을지도 모른다고 생각한다. 그러나 내가 말했듯이 나는 확신하지 못한다. 제거하면 여전히 오류가 발생합니다. 또한 서버 측에서 종료하지 않았습니까? – Fred

+0

답장을 보내 주셔서 감사합니다. 그다지하지 않으면 데이터가 서버에 도달하지 않습니다 –

답변

0

의미가 없다 루프 내부 PrintWriter 닫기하고, 말이없는 readLine() 호출 전에 폐쇄 어느 한 쪽. Socket의 입력 또는 출력 스트림을 닫으면 다른 스트림과 소켓이 닫힙니다.

+0

답장을 보내 주셔서 감사합니다. –