2016-03-09 3 views
1

Я пытаюсь реализовать простое приложение для чата между сервером java-pc и Android-приложением.PC-Android, wifi communication

Я собрал несколько руководств, найденных на линии, чтобы получить почти удовлетворительные результаты.

Моя проблема заключается в следующем: по какой-то причине я могу получать сообщение на свой сервер, но когда я отправляю его с моего сервера (ПК), мой телефон Android не может прочитать строку.

Вот часть в программе Java-рс посылающего сообщение: Первая отправка метод кнопка:

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 класса:

 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] пусто Eventhough сообщение получено или, по меньшей мере, одно сообщение, так как все мои 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