2016-03-09 50 views
1

我正試圖在java-pc服務器和android應用程序之間實現一個簡單的聊天應用程序。PC-Android,wifi通信

我混合了一些線上發現的教程,想出一個幾乎令人滿意的結果。

我的問題是:由於某種原因,我可以收到消息給我的服務器,但是當我從我的服務器(電腦)發送它時,我的android手機無法讀取字符串。

下面是部分在Java的PC程序發送消息: 首先發送按鈕方法:

public void sendMessageBtn(){ 
    String message = userText.getText(); 
    userText.setText(""); 
    chatWindow.appendText("Server : "+ message + "\n"); 
    // send the message to the client 
    mServer.sendMessage(message); 
} 

這裏是的sendMessage(消息)方法在我ServerClass:

public void sendMessage(String message){ 
    System.out.println("Message blocked here"); 
    if(mOut != null){ 
     System.out.println("Message : " + message + " sent"); 
     mOut.println(); 
     mOut.flush(); 
     System.out.println("Message fully sent"); 
    } 
} 

當我收到所有的println();

在這裏手機端是從我asynk類覆蓋聽者的方法:eventhough收到或至少消息

 public class connectTask extends AsyncTask<String, String, TCPClient>{ 

     @Override 
     protected TCPClient doInBackground(String... message) { 
      // We crape a tpc client object and ... 
      mTcpClient = new TCPClient(new OnMessageReceived() { 
       // ... we implement the messageReceived previously defined as an interface 
       @Override 
       public void messageReceived(String message) { 
        // this method calls the onProgressUpdate 
        Log.e("messagedReceive method :", message); 
        publishProgress(message); 

//     Toast.makeText(getApplicationContext(),serverMessage,Toast.LENGTH_LONG).show(); 

       } 
      }); 
      mTcpClient.run(); 
      return null; 
     } 

     @Override 
     protected void onProgressUpdate(String... values) { 

      super.onProgressUpdate(values); 


//   Log.e("On progressedUpdate", "super passed"); 

      // in the arrayList we add the message from the server 
//   arrayList.add("Message received"); 
      Log.e("MainActivity: ", "onProgressedUpdate call"); 
      arrayList.add("Server: "+values[0]); 
      // notify the adapter that the data set has changed. This means that new message received 
      // from server was added to the list 
      mAdapter.notifyDataSetChanged(); 


     } 
    } 

從我的理解,感覺就像值[0]爲空一條消息是因爲我所有的Log.e被激活,表明onReceive方法已被激活。

在此先感謝您的幫助,我一直在研究此問題並開始變得絕望;)。

親切的問候,一個

回答

1

有一個在你的服務器端代碼的問題。

檢查您的sendMessage方法。

您沒有寫信給OutputStreammOut。所以請在if塊中進行。

if(mOut != null) { 
    System.out.println("Message : " + message + " sent"); 
    mOut.pritnln(message); 
    mOut.println(); 
    mOut.flush(); 
    System.out.println("Message fully sent"); 
} 
+0

非常感謝!現在一切都很好。 –

+0

太棒了...如果工作,請關閉該問題.. – ELITE