2016-02-29 59 views
0

我的應用程序正在向java套接字服務器發送數據,但它只顯示它從服務器接收的第一條消息,而不顯示其他消息。沒有從java服務器接收的Anroid套接字客戶端

  1. 服務器是多線程的。
  2. 我已經在Java中創建了兩個客戶端都通過服務器發送和接收消息,但在Android應用程序我有問題接收數據。

這是Android客戶端的完整代碼。

公共類MainActivity延伸AppCompatActivity {

Socket client; 
EditText writeMsg; 
TextView displayMsg; 
String userInput; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    writeMsg = (EditText) findViewById(R.id.editText1); 
    displayMsg = (TextView) findViewById(R.id.textView); 


    ReceiveMsg obj = new ReceiveMsg(); 
    Thread tr = new Thread(obj); 
    tr.start(); 
} 


// A button to send msg to server when clicked 

public void sendBtn(View view){ 

    userInput = writeMsg.getText().toString(); 
    SendMessage object = new SendMessage(); 
    object.execute(); 

}

private class SendMessage extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 

      client = new Socket("10.0.2.2", 4444); 
      PrintWriter output = new PrintWriter(client.getOutputStream(), true); 
      output.print(userInput); 
      output.flush(); 
      output.close(); 
      client.close(); 

     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 

    } 
} 

class ReceiveMsg implements Runnable { 
    public void run() { 


      try { 
       client = new Socket("10.0.2.2", 4444); 

        BufferedReader in = 
         new BufferedReader(
           new InputStreamReader(client.getInputStream())); 
       int i = 0; 

       while (i == 0) { 

        displayMsg.setText(in.readLine()); 
       } 

      } catch (Exception e) { 

      } 

     } 

    } 

}

我想要的應用程序,以顯示在文本視圖的新接收到的消息,並覆蓋現有消息。

+0

謝謝大家的回答。 –

回答

0

您創建了兩個客戶端套接字。一個發送和一個接收。

正常情況下,只有一個客戶端套接字發送命令,然後接收服務器的回覆。

0

像往常一樣,您正在閱讀線路,但您並未發送線路。

使用println()而不是print()

當您收到IOExceptionreadLine()返回空時,您還需要停止閱讀。

爲什麼有兩個客戶端套接字是另一個謎。

相關問題